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] Expression Expression :: Value = Int Int | Bool Bool | Func Int [Expression] ([Expression] -> Expression) instance toString Function, Expression, Value