diff options
| author | mryouse | 2022-06-12 01:31:50 +0000 |
|---|---|---|
| committer | mryouse | 2022-06-12 01:31:50 +0000 |
| commit | f420e21742c3b35cde5c28cd3e6d5037e745d62e (patch) | |
| tree | a8efaa8e37063e9bff632bf8abbf6ab4df953a79 | |
| parent | 0459ef120e1a7f23c259c35d3249b71120906fcc (diff) | |
fix 'remove' and 'branch'
| -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] |
