summaryrefslogtreecommitdiff
path: root/src/Contexts.ml
diff options
context:
space:
mode:
authorSon Ho2021-12-17 16:55:55 +0100
committerSon Ho2021-12-17 16:55:55 +0100
commite1c7e68a476f65ec8c0b4d7c02a2dea09b2a4522 (patch)
treeda5bf4925c410d7449fe24e266cc3c2c97d8ce1b /src/Contexts.ml
parent644f91b355de4c80b882625e476cc5ee6b86d696 (diff)
Use eval_ctx instead of env in many functions of the interpreter
Diffstat (limited to 'src/Contexts.ml')
-rw-r--r--src/Contexts.ml20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Contexts.ml b/src/Contexts.ml
index 0dc18952..001ebf19 100644
--- a/src/Contexts.ml
+++ b/src/Contexts.ml
@@ -244,3 +244,23 @@ class ['self] map_frame_concrete =
let env = self#visit_env acc env in
em :: env
end
+
+(** Visitor to iterate over the values in a context *)
+class ['self] iter_eval_ctx =
+ object (self : 'self)
+ inherit [_] iter_env as super
+
+ method visit_eval_ctx : 'acc -> eval_ctx -> unit =
+ fun acc ctx -> super#visit_env acc ctx.env
+ end
+
+(** Visitor to map the values in a context *)
+class ['self] map_eval_ctx =
+ object (self : 'self)
+ inherit [_] map_env as super
+
+ method visit_eval_ctx : 'acc -> eval_ctx -> eval_ctx =
+ fun acc ctx ->
+ let env = super#visit_env acc ctx.env in
+ { ctx with env }
+ end