From bc3aae1dcb9aa1785ea02b5e012e5ca30a5a2ae4 Mon Sep 17 00:00:00 2001 From: Ian Piumarta Date: Tue, 7 May 2024 23:25:35 +0900 Subject: [PATCH] Block_eval() executes its body in a new environment --- minproto.leg | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/minproto.leg b/minproto.leg index 7b23923..110dcd0 100644 --- a/minproto.leg +++ b/minproto.leg @@ -1,6 +1,6 @@ # minproto.leg -- minimal prototype langauge for semantic experiments # -# last edited: 2024-05-07 14:39:10 by piumarta on zora-1034.local +# last edited: 2024-05-07 23:23:22 by piumarta on m1mbp %{ ; @@ -1578,7 +1578,9 @@ oop Block_eval(oop exp, oop env) oop *indexed = _get(body, Object,indexed); int size = _get(body, Object,isize); oop result = nil; - for (int i = 0; i < size; ++i) result = eval(indexed[i], env); + oop env2 = new(pObject); + _setDelegate(env2, env); + for (int i = 0; i < size; ++i) result = eval(indexed[i], env2); return result; }