lambda-calculator-3.0.0.1: A lambda calculus interpreter
Safe HaskellNone
LanguageHaskell2010

Language.Lambda.SystemF.Expression

Documentation

data SystemFExpr name ty Source #

Constructors

Var name

Variable: x

App (SystemFExpr name ty) (SystemFExpr name ty)

Function application: `x y`

Abs name (Ty ty) (SystemFExpr name ty)

Lambda abstraction: `x: X. x`

TyAbs ty (SystemFExpr name ty)

Type Abstraction: `X. body`

TyApp (SystemFExpr name ty) (Ty ty)

Type Application: `x [X]`

Instances

Instances details
(Eq name, Eq ty) => Eq (SystemFExpr name ty) Source # 
Instance details

Defined in Language.Lambda.SystemF.Expression

Methods

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

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

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

Defined in Language.Lambda.SystemF.Expression

Methods

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

show :: SystemFExpr name ty -> String #

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

(Pretty name, Pretty ty) => Pretty (SystemFExpr name ty) Source # 
Instance details

Defined in Language.Lambda.SystemF.Expression

Methods

pretty :: SystemFExpr name ty -> Doc ann #

prettyList :: [SystemFExpr name ty] -> Doc ann #

data Ty name Source #

Constructors

TyVar name

Type variable (T)

TyArrow (Ty name) (Ty name)

Type arrow (T -> U)

TyForAll name (Ty name)

Universal type (forall T. X)

Instances

Instances details
Eq name => Eq (Ty name) Source # 
Instance details

Defined in Language.Lambda.SystemF.Expression

Methods

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

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

Show name => Show (Ty name) Source # 
Instance details

Defined in Language.Lambda.SystemF.Expression

Methods

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

show :: Ty name -> String #

showList :: [Ty name] -> ShowS #

Pretty name => Pretty (Ty name) Source # 
Instance details

Defined in Language.Lambda.SystemF.Expression

Methods

pretty :: Ty name -> Doc ann #

prettyList :: [Ty name] -> Doc ann #

prettyPrint :: Pretty pretty => pretty -> Text Source #