lambda-calculator-3.1.1.0: A lambda calculus interpreter
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Lambda.SystemF.TypeCheck

Documentation

type UniqueSupply n = [n] Source #

type Context' n t = Map n t Source #

typecheck :: (Ord name, Pretty name) => SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckTopLevel :: (Ord name, Pretty name) => Context name -> SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckLet :: (Pretty name, Ord name) => Context name -> name -> SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckExpr :: (Ord name, Pretty name) => Context name -> SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckVar :: Ord name => Context name -> name -> Typecheck name (Ty name) Source #

typecheckVarAnn :: (Ord name, Pretty name) => Context name -> name -> Ty name -> Typecheck name (Ty name) Source #

typecheckAbs :: (Ord name, Pretty name) => Context name -> name -> Ty name -> SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckApp :: (Ord name, Pretty name) => Context name -> SystemFExpr name -> SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckTyAbs :: (Ord name, Pretty name) => Context name -> name -> SystemFExpr name -> Typecheck name (Ty name) Source #

typecheckTyApp :: (Ord name, Pretty name) => Context name -> SystemFExpr name -> Ty name -> Typecheck name (Ty name) Source #

typecheckVar' :: Ord name => Context name -> name -> Maybe (Ty name) Source #

liftForAlls :: Ty name -> Ty name Source #

liftForAlls' :: Ty name -> ([name], Ty name) Source #

isTyEquivalent :: Ord name => Ty name -> Ty name -> Bool Source #

areForAllsEquivalent :: Ord name => (name, Ty name) -> (name, Ty name) -> Bool Source #

tyUnique :: Typecheck name name Source #

tyAppMismatchError :: (Ord name, Pretty name) => Context name -> SystemFExpr name -> Ty name -> Typecheck name LambdaException Source #