From f420e21742c3b35cde5c28cd3e6d5037e745d62e Mon Sep 17 00:00:00 2001 From: mryouse Date: Sun, 12 Jun 2022 01:31:50 +0000 Subject: fix 'remove' and 'branch' --- interpreter.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'interpreter.py') diff --git a/interpreter.py b/interpreter.py index e2cf006..d46e076 100644 --- a/interpreter.py +++ b/interpreter.py @@ -409,8 +409,7 @@ def interpretBranch(symbol, args, env): return evaluate(arg.args[1], env) return List([]) -# TODO -GLOBALS.register("branch", Builtin(interpretBranch, 1)) +GLOBALS.register("branch", Builtin(interpretBranch, [for_body_arg], for_body_arg)) def interpretFunc(symbol, args, env): # func (args) (exprs) @@ -735,19 +734,17 @@ def interpretAppend(symbol, args, env): GLOBALS.register("append", Builtin(interpretAppend, [Arg("list", T.List, False, False), Arg("item", T.Any, False, False)])) +# TODO: this is actually for records/structs/whatever they're called def interpretRemove(symbol, args, env): - lst = evaluate(args[0], env) - if not isinstance(lst, List): - raise InterpretPanic(symbol, "expects a :list as its first argument", lst) - key = evaluate(args[1], env) + lst = args[0] + key = args[1] out = [] for arg in lst.args: if arg.args[0].value != key.value: out.append(arg) return List(out, True) -# TODO -GLOBALS.register("remove", Builtin(interpretRemove, 2, 2)) +GLOBALS.register("remove", Builtin(interpretRemove, [Arg("list", T.List, False, False), Arg("key", T.Any, False, False)])) def interpretWhile(symbol, args, env): cond = args[0] -- cgit v1.2.3