start with adts
[minfp.git] / ast.dcl
diff --git a/ast.dcl b/ast.dcl
index 72fdf2c..b7c29ef 100644 (file)
--- a/ast.dcl
+++ b/ast.dcl
@@ -6,6 +6,7 @@ from StdOverloaded import class toString
 from int import :: Eval
 
 :: Function = Function [Char] [[Char]] Expression
+:: TypeDef = TypeDef [Char] [[Char]] [([Char], [Type])]
 
 :: Expression
        = Lit Value
@@ -22,4 +23,11 @@ from int import :: Eval
        | 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