summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_utilities.lem
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp/interp_utilities.lem')
-rw-r--r--src/lem_interp/interp_utilities.lem11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lem_interp/interp_utilities.lem b/src/lem_interp/interp_utilities.lem
index 4e8c1111..1878066f 100644
--- a/src/lem_interp/interp_utilities.lem
+++ b/src/lem_interp/interp_utilities.lem
@@ -52,15 +52,20 @@ let rec power (a: integer) (b: integer) : integer =
let foldr2 f x l l' = List.foldr (Tuple.uncurry f) x (List.zip l l')
let map2 f l l' = List.map (Tuple.uncurry f) (List.zip l l')
-(*As in the type system, the first effect is local to the expression and the second is cummulative*)
-type tannot = maybe (t * tag * list nec * effect * effect)
-
let get_exp_l (E_aux e (l,annot)) = l
val pure : effect
let pure = Effect_aux(Effect_set []) Unknown
let unit_t = Typ_aux(Typ_app (Id_aux (Id "unit") Unknown) []) Unknown
+let mk_typ_app str args = Typ_aux (Typ_app (Id_aux (Id str) Unknown) (List.map (fun aux -> Typ_arg_aux aux Unknown) args)) Unknown
+let mk_typ_id str = Typ_aux (Typ_id (Id_aux (Id str) Unknown)) Unknown
+
+let mk_typ_var str = Typ_aux (Typ_var (Kid_aux (Var ("'" ^ str)) Unknown)) Unknown
+let mk_typ_tup typs = Typ_aux (Typ_tup typs) Unknown
+
+let nconstant n = Nexp_aux (Nexp_constant n) Unknown
+
(* Workaround Lem's inability to scrap my (type classes) boilerplate.
* Implementing only Eq, and only for literals - hopefully this will
* be enough, but we should in principle implement ordering for everything in