392b58941e591f8a2e043c00f9e1c4ac427df674
[minfp.git] / ast.dcl
1 definition module ast
2
3 from Data.Either import :: Either
4 from StdOverloaded import class toString
5
6 :: AST = AST [Function]
7
8 :: Function = Function [Char] [[Char]] Expression
9
10 :: Expression
11 = Lit Value
12 | Var [Char]
13 | App Expression Expression
14 | Lambda [Char] Expression
15 | Builtin [Char] [Expression]
16
17 :: Value
18 = Int Int
19 | Bool Bool
20 | Char Char
21 | Func Int [Expression] ([Expression] -> Expression)
22
23 :: Type
24 = TVar [Char]
25 | TInt
26 | TBool
27 | TChar
28 | TFun Type Type
29
30 instance toString AST, Function, Expression, Value, Type