From fff3bf748899f524bd24c1243497cfb6ca825c33 Mon Sep 17 00:00:00 2001 From: mryouse Date: Wed, 15 Jun 2022 22:09:38 +0000 Subject: map supports lambdas --- interpreter.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'interpreter.py') 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] -- cgit v1.2.3