aboutsummaryrefslogtreecommitdiff
path: root/neb/std/core.py
diff options
context:
space:
mode:
Diffstat (limited to 'neb/std/core.py')
-rw-r--r--neb/std/core.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/neb/std/core.py b/neb/std/core.py
index 83b164c..d9f512e 100644
--- a/neb/std/core.py
+++ b/neb/std/core.py
@@ -45,10 +45,17 @@ def interpretRedef(symbol, args, env, ns):
CORE.register("redef", Builtin("redef", interpretRedef, [def_name_arg, def_val_arg]))
def interpretLambda(symbol, args, env, ns):
- if len(args[0].args) != 0:
- func = UserFunction("<lambda>", args[0].args, args[1:])
+ new_args = args
+ return_type = Type(":any")
+ if isinstance(args[0], Type):
+ return_type = args[0]
+ new_args = args[1:]
+
+ if len(new_args[0].args) != 0:
+ func = UserFunction("<lambda>", new_args[0].args, new_args[1:])
else:
- func = UserFunction("<lambda>", [], args[1:])
+ func = UserFunction("<lambda>", [], new_args[1:])
+ func.return_type = return_type
return func
lambda_args_arg = Arg("args", TypeEnum.ANY, lazy=True)