diff options
| -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] | 
