aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormryouse2022-06-15 22:09:38 +0000
committermryouse2022-06-15 22:09:38 +0000
commitfff3bf748899f524bd24c1243497cfb6ca825c33 (patch)
tree45fedba28b8bb64d2d990ebdb1aa4aa00fc5e332
parent384553ba9ddece11038eb2b4ecbd04d947c23300 (diff)
map supports lambdas
-rw-r--r--interpreter.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/interpreter.py b/interpreter.py
index da8cc96..7f28c63 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -534,18 +534,18 @@ GLOBALS.register("rest", Builtin(interpretRest, [Arg("arg", TypeEnum.LIST, False
def interpretMap(symbol, args, env, ns):
# TODO: to support lambdas, we can't assume the func is defined
func = args[0]
- if not isinstance(func, Symbol):
- raise InterpretPanic(symbol, "requires a symbol as its first argument", func)
+ if not isinstance(func, Function):
+ raise InterpretPanic(symbol, "requires a :func as its first argument", func)
lst = evaluate(args[1], env, ns)
if not isinstance(lst, List):
raise InterpretPanic(symbol, "requires a :list as its second argument", lst)
out = []
for arg in lst.args:
- ev = evaluate(List([func, arg]), env, ns)
+ ev = func.call(List([func, arg]), env, ns)
out.append(ev)
return List(out, True)
-GLOBALS.register("map", Builtin(interpretMap, [Arg("func", TypeEnum.ANY, False, True), Arg("list", TypeEnum.LIST, False, False)]))
+GLOBALS.register("map", Builtin(interpretMap, [Arg("func", TypeEnum.ANY, False, False), Arg("list", TypeEnum.LIST, False, False)]))
def interpretZip(symbol, args, env, ns):
z1 = args[0]