diff options
Diffstat (limited to 'interpreter.py')
| -rw-r--r-- | interpreter.py | 13 |
1 files changed, 5 insertions, 8 deletions
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 <name> (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] |
