aboutsummaryrefslogtreecommitdiff
path: root/neb/std/core.py
diff options
context:
space:
mode:
authormryouse2022-07-06 02:20:31 +0000
committermryouse2022-07-06 02:20:31 +0000
commit7ffeef0faef3fbc389069df853109afc76260f0d (patch)
tree49ada711455659e8112e93729b42b39f3d050f0f /neb/std/core.py
parent800d04b014e90596dcad2d3a283da4b1e274a14f (diff)
parent276dd853729a7c71ef4805786793bbc8f651b00d (diff)
Merge branch 'master' into feature/listtypes
Diffstat (limited to 'neb/std/core.py')
-rw-r--r--neb/std/core.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/neb/std/core.py b/neb/std/core.py
index d846498..a44417c 100644
--- a/neb/std/core.py
+++ b/neb/std/core.py
@@ -124,25 +124,27 @@ def interpretFunc(symbol, args, env, ns):
CORE.register("func", Builtin("func", interpretFunc, [def_name_arg, lambda_args_arg, lambda_body_arg], lambda_body_arg, Type(":list")))
def interpretBlock(symbol, args, env, ns):
+ new_env = Environment(env)
ret = List([])
for arg in args:
- ret = evaluate(arg, env, ns)
+ ret = evaluate(arg, new_env, ns)
return ret
block_arg = Arg("expr", TypeEnum.ANY, lazy=True)
CORE.register("block", Builtin("block", interpretBlock, [block_arg], block_arg))
def interpretWhile(symbol, args, env, ns):
+ new_env = Environment(env)
cond = args[0]
ret = List([])
while True:
- ev = evaluate(cond, env, ns)
+ ev = evaluate(cond, new_env, ns)
if not isinstance(ev, Bool):
raise InterpretPanic(symbol, "expects a :bool condition", ev)
if not ev.value:
break
for arg in args[1:]:
- ret = evaluate(arg, env, ns)
+ ret = evaluate(arg, new_env, ns)
return ret
CORE.register("while", Builtin("while", interpretWhile, [Arg("cond", TypeEnum.BOOL, lazy=True)], Arg("expr", TypeEnum.ANY, lazy=True)))