lambda-calculator-2.0.0: A lambda calculus interpreter

Safe HaskellSafe
LanguageHaskell2010

Language.SystemF.Expression

Documentation

data SystemFExpr name ty Source #

Constructors

Var name 
App (SystemFExpr name ty) (SystemFExpr name ty) 
Abs name (Ty ty) (SystemFExpr name ty) 
TyAbs ty (SystemFExpr name ty) 
TyApp (SystemFExpr name ty) (Ty ty) 

Instances

(Eq ty, Eq name) => Eq (SystemFExpr name ty) Source # 

Methods

(==) :: SystemFExpr name ty -> SystemFExpr name ty -> Bool #

(/=) :: SystemFExpr name ty -> SystemFExpr name ty -> Bool #

(Show ty, Show name) => Show (SystemFExpr name ty) Source # 

Methods

showsPrec :: Int -> SystemFExpr name ty -> ShowS #

show :: SystemFExpr name ty -> String #

showList :: [SystemFExpr name ty] -> ShowS #

(PrettyPrint n, PrettyPrint t) => PrettyPrint (SystemFExpr n t) Source # 

data Ty name Source #

Constructors

TyVar name 
TyArrow (Ty name) (Ty name) 
TyForAll name (Ty name) 

Instances

Eq name => Eq (Ty name) Source # 

Methods

(==) :: Ty name -> Ty name -> Bool #

(/=) :: Ty name -> Ty name -> Bool #

Show name => Show (Ty name) Source # 

Methods

showsPrec :: Int -> Ty name -> ShowS #

show :: Ty name -> String #

showList :: [Ty name] -> ShowS #

PrettyPrint n => PrettyPrint (Ty n) Source # 

Methods

prettyPrint :: Ty n -> String Source #

uncurryAbs :: n -> Ty t -> SystemFExpr n t -> ([(n, Ty t)], SystemFExpr n t) Source #

uncurryTAbs :: t -> SystemFExpr n t -> ([t], SystemFExpr n t) Source #