239 lines · 7.2 KB · Standard ML
RawDownload
local  open Fnlib Mixture Const Smlprim Globals Location Units;in (* cvr: operations on structures *)val SofRecStr : RecStr -> Str;val MEofStr : Str -> ModEnv;val FEofStr : Str -> FunEnv;val GEofStr : Str -> SigEnv;val VEofStr : Str -> VarEnv;val TEofStr : Str -> TyEnv; val removeGEofStr : Str -> Str;val removeGEofRecStr : RecStr -> RecStr; val VEofCE : ConEnv -> VarEnv; datatype ScopeViolation =     TYNAMEsv of TyName  | TYPEVARsv of TypeVar; type matchReason; datatype reason =     UnifyCircular | UnifyEquality | UnifyExplicit  | UnifyTup | UnifyRec of Lab | UnifyOther  | UnifyMod of matchReason option * matchReason option  | UnifyScope of TypeVar * ScopeViolation; exception MatchError of matchReason; exception Unify of reason; val tyname_unit     : TyName;val tyname_bool     : TyName;val tyname_int      : TyName;val tyname_word     : TyName;val tyname_word8    : TyName;val tyname_char     : TyName;val tyname_real     : TyName;val tyname_string   : TyName;val tyname_substring: TyName; val tyname_syserror : TyName;val tyname_list     : TyName;val tyname_vector   : TyName;val tyname_ref      : TyName;val tyname_exn      : TyName;val tyname_option   : TyName;val tyname_order    : TyName;val tyname_frag     : TyName;val tyname_ppstream : TyName; val mkConInfo : unit -> ConInfo;val mkExConInfo : unit -> ExConInfo;val mkPrimInfo : int -> SMLPrim -> PrimInfo; val normType: Type -> Type;val normTyApp: TyApp -> TyFun; val normTyFun: TyFun -> TyFun;  val normRecStr : RecStr -> RecStr;val normStr : Str -> Str;val normMod : Mod -> Mod;val normExMod : ExMod -> ExMod; val savePrState : unit -> (unit -> unit);val under_binder : ('a -> 'b) -> 'a -> 'b; val checkpoint_free_typevar_names: unit -> unit;val rollback_free_typevar_names: unit -> unit;val commit_free_typevar_names: unit -> unit;val prTypeVar: TypeVar -> unit;val prTyName : bool -> TyName -> unit;val prTyNameSet : TyNameSet -> string -> unit;val prTyApp : int -> TyApp -> unit;val prType : Type -> unit;val prTypeScheme : TypeScheme -> unitval prMod : Mod -> unit;val prSig : Sig -> unit;val prModInfo : string -> RecStr global -> unit;val prFunInfo : string -> GenFun global -> unit;val prSigInfo : string -> Sig global -> unit;val prInfixStatus : string -> InfixStatus -> unit;val prVarInfo : ((TypeScheme * ConStatusDesc) global -> unit) ->     string -> (TypeScheme * ConStatusDesc) global -> unitval prTyInfo : string -> (TyFun * ConEnv) -> unit;(* val prGenFun : GenFun -> unit; *)val prTyFun : TyFun -> unit; val resetTypePrinter: unit -> unit;val collectExplicitVars: Type -> unit;val collectTopVars: ExEnvironment -> unit;val printNextType: Type -> unit;val printType: Type -> unit;val printScheme: TypeScheme -> unit;val collectSchemeExplicitVars: TypeScheme -> unit;val printNextScheme: TypeScheme -> unit;   val newExplicitTypeVar: string -> TypeVar;val mkTypeVar   : bool -> bool -> bool -> int -> TypeVar;val newTypeVar  : bool -> bool -> bool -> TypeVar;val newTypeVars : int -> TypeVar list;val newUnknown  : unit -> Type;val isExplicit  : TypeVar -> bool; val TypeOfTypeVar : TypeVar -> Type;val fresh3DotType : unit -> RowType;val contentsOfRowType : RowType -> Type Row * bool;val isTupleType   : Type -> bool;  val kindTyName : TyName -> Kind; val kindTyApp : TyApp -> Kind; val kindTyFun : TyFun -> Kind;  val etaExpandTyApp : TyApp -> TyFun;val freeVarsTyStr :     TyName list -> TypeVar list ->     (TyName list * TypeVar list * RowVar list) ->     TyStr ->     (TyName list * TypeVar list * RowVar list)val unify: Type -> Type -> unit;val unifyTyApp: TyApp -> TyApp -> unit; val unifyTyFun: TyFun -> TyFun -> unit; val equalsTyFunTyName: TyFun -> TyName -> bool;  val generalization: bool -> Type -> TypeScheme;   val specialization: TypeScheme -> Type;val TypeOfScheme : TypeScheme -> Type;val type_subst: (TypeVar * Type) list -> Type -> Type;val freshSchemeOfType: Type -> TypeScheme;val mkScheme: TypeVar list -> Type -> TypeScheme;val trivial_scheme: Type -> TypeScheme;val scheme_1u: (Type -> Type) -> TypeScheme;val scheme_1u_eq: (Type -> Type) -> TypeScheme;val scheme_1u_imp: (Type -> Type) -> TypeScheme;val scheme_2u: (Type -> Type -> Type) -> TypeScheme;val scheme_3u: (Type -> Type -> Type -> Type) -> TypeScheme; val resetBindingLevel: unit -> unit;val incrBindingLevel: unit -> unit;val decrBindingLevel: unit -> unit;val currentBindingLevel: unit -> int;val setCurrentBindingLevel: bool -> Type -> unit; val EqualityOfTyFun : TyFun -> TyNameEqu; val makeEquality : Type -> unitval schemeViolatesEquality : TypeScheme -> bool;val typeIsImperative : Type -> bool; val sc_bool : TypeScheme;val sc_bogus : TypeScheme;val initial_bool_CE : ConEnv;val initial_list_CE : ConEnv;val initial_option_CE : ConEnv;val initial_order_CE : ConEnv;val initial_frag_CE : ConEnv; val type_con : Type list -> TyName -> Type;val type_arrow: Type -> Type -> Type;val type_rigid_record : Type Row -> Type;val type_flexible_record: Type Row -> RowType -> Type;val type_ref: Type -> Type;val type_pair: Type -> Type -> Type;val type_product: Type list -> Type; val type_unit      : Type;val type_bool      : Type;val type_int       : Type;val type_word      : Type;val type_word8     : Type;val type_char      : Type;val type_real      : Type;val type_string    : Type;val type_substring : Type; val type_syserror  : Type;val type_list      : Type -> Type;val type_vector    : Type -> Type;val type_exn       : Type;val type_option    : Type -> Type;val type_order     : Type;val type_frag      : Type -> Type;val type_ppstream  : Type; val unit_General : CSig; val checkClosedCSig : CSig -> unit; val checkClosedExEnvironment : ExEnvironment -> unit;  val copySig : (TyName * TyApp) list -> (TypeVar * Type) list -> Sig -> Sig; val copyMod : (TyName * TyApp) list -> (TypeVar * Type) list -> Mod -> Mod; val copyRecStr : (TyName * TyApp) list -> (TypeVar * Type) list -> RecStr -> RecStr; val copyStr : (TyName * TyApp) list -> (TypeVar * Type) list -> Str -> Str; val copyGenFun : (TyName * TyApp) list -> (TypeVar * Type) list -> GenFun -> GenFun;  val parameteriseTyNameSet: TyNameSet -> TyNameSet -> (TyNameSet * (TyName * TyApp) list); val conEnvOfTyApp: TyApp -> ConEnv option;  (* destructively change the kind and update the binding level of type names*)val refreshTyName: TnSort -> TyName ->  unit; val refreshTyNameSet: TnSort -> TyNameSet  -> unit; val realizeLongTyCon : QualifiedIdent -> TyStr ->  TyStr -> unit;val matchMod : Mod -> Mod -> unit; val matchCSig : CSig -> CSig -> unit; val errMatchReason : string -> string -> matchReason -> unit;val checkCSig : CSig -> CSig -> unit;  (* cvr: operations on normed structures and environments to return   runtime field and  static info *) val sizeOfStr: Str -> int; val lookupMEofStr : Str -> string -> (int * (RecStr global))val lookupFEofStr : Str -> string -> (int * (GenFun global))val lookupVEofStr : Str -> string -> (int*(TypeScheme * ConStatusDesc) global); val lookupMEofEnv : Environment -> string -> (int * (RecStr global))val lookupFEofEnv : Environment -> string -> (int * (GenFun global))val lookupVEofEnv : Environment -> string -> (int*  (TypeScheme * 						     ConStatusDesc) global); end;