definition module ast
+from Data.Either import :: Either
from StdOverloaded import class toString
+from int import :: Eval
+
:: Function = Function [Char] [[Char]] Expression
:: Expression
| 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)
+ | Func (Expression -> Eval Value)
instance toString Function, Expression, Value