Typechecking for basic language done
[hcoop/domtool2.git] / src / ast.sml
index 91bca42..e62c8fb 100644 (file)
@@ -48,6 +48,12 @@ datatype typ' =
        *  - Is valid in the given pred
        *  - Expects an environment compatible with the first record
        *  - Modifies it according to the second record *)
+
+       | TError
+       (* Marker that something already went wrong, so don't generate further
+       * error messages. *)
+       | TUnif of string * typ option ref
+       (* Unification variable to be determined during type-checking *)
 withtype typ = typ' * position
      and record = typ StringMap.map
 
@@ -59,7 +65,7 @@ datatype exp' =
        | EList of exp list
        (* Basic list constructor *)
 
-       | ELam of string * typ * exp
+       | ELam of string * typ option * exp
        (* Function abstraction *)
        | EVar of string
        (* Variable bound by a function *)