aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py13
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]