data ConInfo : TypeDATACON : ConInfoTYCON : ConInfoNIL : ConInfoCONS : ConInfoENUM : Nat -> ConInfoNOTHING : ConInfoJUST : ConInfoRECORD : ConInfoZERO : ConInfoSUCC : ConInfoUNIT : ConInfodata InlineOk : TypeTagging let binders with whether it is safe to inline them
data CExp : ScopedCExp - an expression ready for compiling.
CLocal : FC -> (0 _ : IsVar x idx vars) -> CExp varsCRef : FC -> Name -> CExp varsCLam : FC -> (x : Name) -> CExp (x :: vars) -> CExp varsCLet : FC -> (x : Name) -> InlineOk -> CExp vars -> CExp (x :: vars) -> CExp varsCApp : FC -> CExp vars -> List (CExp vars) -> CExp varsCCon : FC -> Name -> ConInfo -> Maybe Int -> List (CExp vars) -> CExp varsCOp : FC -> PrimFn arity -> Vect arity (CExp vars) -> CExp varsCExtPrim : FC -> Name -> List (CExp vars) -> CExp varsCForce : FC -> LazyReason -> CExp vars -> CExp varsCDelay : FC -> LazyReason -> CExp vars -> CExp varsCConCase : FC -> CExp vars -> List (CConAlt vars) -> Maybe (CExp vars) -> CExp varsCConstCase : FC -> CExp vars -> List (CConstAlt vars) -> Maybe (CExp vars) -> CExp varsCPrimVal : FC -> Constant -> CExp varsCErased : FC -> CExp varsCCrash : FC -> String -> CExp varsdata CConAlt : ScopedMkConAlt : Name -> ConInfo -> Maybe Int -> (args : List Name) -> CExp (args ++ vars) -> CConAlt varsdata CConstAlt : ScopedMkConstAlt : Constant -> CExp vars -> CConstAlt varsClosedCExp : Typedata NamedCExp : TypeNamedCExp - as above, but without the name index, so with explicit
names, which are faster (but less safe) to manipulate in the inliner.
You can, howeveer, assume that name bindings are unique - translation
to this form (and the liner) ensure that, even if the type doesn't
guarantee it!
NmLocal : FC -> Name -> NamedCExpNmRef : FC -> Name -> NamedCExpNmLam : FC -> Name -> NamedCExp -> NamedCExpNmLet : FC -> Name -> NamedCExp -> NamedCExp -> NamedCExpNmApp : FC -> NamedCExp -> List NamedCExp -> NamedCExpNmCon : FC -> Name -> ConInfo -> Maybe Int -> List NamedCExp -> NamedCExpNmOp : FC -> PrimFn arity -> Vect arity NamedCExp -> NamedCExpNmExtPrim : FC -> Name -> List NamedCExp -> NamedCExpNmForce : FC -> LazyReason -> NamedCExp -> NamedCExpNmDelay : FC -> LazyReason -> NamedCExp -> NamedCExpNmConCase : FC -> NamedCExp -> List NamedConAlt -> Maybe NamedCExp -> NamedCExpNmConstCase : FC -> NamedCExp -> List NamedConstAlt -> Maybe NamedCExp -> NamedCExpNmPrimVal : FC -> Constant -> NamedCExpNmErased : FC -> NamedCExpNmCrash : FC -> String -> NamedCExpdata NamedConAlt : Typedata NamedConstAlt : TypeMkNConstAlt : Constant -> NamedCExp -> NamedConstAltdata CFType : TypeCFUnit : CFTypeCFInt : CFTypeCFInteger : CFTypeCFInt8 : CFTypeCFInt16 : CFTypeCFInt32 : CFTypeCFInt64 : CFTypeCFUnsigned8 : CFTypeCFUnsigned16 : CFTypeCFUnsigned32 : CFTypeCFUnsigned64 : CFTypeCFString : CFTypeCFDouble : CFTypeCFChar : CFTypeCFPtr : CFTypeCFGCPtr : CFTypeCFBuffer : CFTypeCFForeignObj : CFTypeCFWorld : CFTypeCFFun : CFType -> CFType -> CFTypeCFIORes : CFType -> CFTypeCFStruct : String -> List (String, CFType) -> CFTypeCFUser : Name -> List CFType -> CFTypedata CDef : TypeMkFun : (args : Scope) -> CExp args -> CDefMkCon : Maybe Int -> Nat -> Maybe Nat -> CDefMkForeign : List String -> List CFType -> CFType -> CDefMkError : ClosedCExp -> CDefdata NamedDef : TypeMkNmFun : List Name -> NamedCExp -> NamedDefMkNmCon : Maybe Int -> Nat -> Maybe Nat -> NamedDefMkNmForeign : List String -> List CFType -> CFType -> NamedDefMkNmError : NamedCExp -> NamedDefdata Names : ScopedgetLocName : (idx : Nat) -> Names vars -> (0 _ : IsVar name idx vars) -> NameaddLocs : (args : List Name) -> Names vars -> Names (args ++ vars)forget : CExp vars -> NamedCExpforgetDef : CDef -> NamedDefinsertNames : SizeOf outer -> SizeOf ns -> CExp (outer ++ inner) -> CExp (outer ++ (ns ++ inner))shrinkCExp : Thin newvars vars -> CExp vars -> CExp newvarsSubstCEnv : Scope -> Scopedsubsts : SizeOf dropped -> SubstCEnv dropped vars -> CExp (dropped ++ vars) -> CExp varsmkLocals : SizeOf outer -> Bounds bound -> CExp (outer ++ vars) -> CExp (outer ++ (bound ++ vars))refsToLocals : Bounds bound -> CExp vars -> CExp (bound ++ vars)getFC : CExp args -> FCgetFC : NamedCExp -> FC