from int import :: Eval
:: Function = Function [Char] [[Char]] Expression
+:: TypeDef = TypeDef [Char] [[Char]] [([Char], [Type])]
:: Expression
= Lit Value
| Lambda` [Char] Expression
| Builtin (Expression -> Eval Expression)
-instance toString Function, Expression, Value
+:: Type
+ = TVar [Char]
+ | TTuple Type Type
+ | TInt
+ | TBool
+ | (-->) infixr 9 Type Type
+
+instance toString Function, Expression, Value, Type, TypeDef