diff options
Diffstat (limited to 'neb/std/functools.py')
| -rw-r--r-- | neb/std/functools.py | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/neb/std/functools.py b/neb/std/functools.py index 9e426b8..f83c49d 100644 --- a/neb/std/functools.py +++ b/neb/std/functools.py @@ -34,13 +34,11 @@ def interpretMap(symbol, args, env, ns): FUNCTOOLS.register("map", Builtin("map", interpretMap, [Arg("func", TypeEnum.ANY), Arg("list", TypeEnum.LIST)], return_type=Type(":list"))) +# TODO I think this is wrong def interpretApply(symbol, args, env, ns): - # TODO: to support lambdas, we can't assume the func is defined func = args[0] - if not isinstance(func, Symbol): + if not isinstance(func, Function): raise InterpretPanic(symbol, "requires a symbol as its first argument", func) - new_expr = Expr([func] + args[1].args) - return evaluate(new_expr, env, ns) - -FUNCTOOLS.register("apply", Builtin("apply", interpretApply, [Arg("func", TypeEnum.ANY, lazy=True), Arg("list", TypeEnum.LIST)])) + return func.call(Expr([func] + args[1].args), env, ns) +FUNCTOOLS.register("apply", Builtin("apply", interpretApply, [Arg("func", TypeEnum.ANY), Arg("list", TypeEnum.LIST)])) |
