definition module ast from StdOverloaded import class toString :: Function = Function [Char] [[Char]] Expression :: Expression = Lit Value | Var [Char] | App Expression Expression | Lambda [Char] Expression | Builtin [Char] [Expression] | Let [Char] [[Char]] Expression Expression :: Value = Int Int | Bool Bool | Func Int [Expression] ([Expression] -> Expression) :: Type = TVar [Char] | TInt | TBool | TFun Type Type instance toString Function, Expression, Value, Type