:: Expression
= Lit Value
| Var [Char]
- | Tuple Expression Expression
| App Expression Expression
| Lambda [Char] Expression
| Let [([Char], Expression)] Expression
:: Type
= TVar [Char]
- | TTuple Type Type
| TInt
| TBool
+ | TApp Type Type
| (-->) infixr 9 Type Type
instance toString Function, Expression, Value, Type, TypeDef