diff --git a/eval.ml b/eval.ml index 50694c4..ae42076 100644 --- a/eval.ml +++ b/eval.ml @@ -15,7 +15,7 @@ type value = and expr = Ast.t (* environment for eval *) -and env = (string * value) list +and env = Env of (string * value) list exception No_operation exception Too_many_arguments @@ -79,16 +79,16 @@ end module Env = struct type t = env - let empty = [] + let empty = Env [] - let get_opt e name = + let get_opt (Env e) name = List.assoc_opt name e - let bind v e = - v::e + let bind v (Env e) = + Env (v::e) - let bind_seq seq e = - List.of_seq seq @ e + let bind_seq seq (Env e) = + Env (List.of_seq seq @ e) end (* operators *)