From ee631bf97c1f1ef76696e803f57dcfd36d6064b9 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 26 Sep 2019 18:05:49 -0700 Subject: fun operator: don't cons binding when handling lambda. * eval.c (op_fun): Don't cons up a fake fbinding when processing lambda; just return result of func_interp. Test for null fbinding consolidated, too. --- eval.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eval.c b/eval.c index 807abdce..714b86a1 100644 --- a/eval.c +++ b/eval.c @@ -1855,11 +1855,11 @@ static val op_fun(val form, val env) val name = second(form); val fbinding = lookup_fun(env, name); - if (!fbinding && consp(name) && car(name) == lambda_s) - fbinding = cons(name, func_interp(env, name)); - - if (!fbinding) + if (!fbinding) { + if (consp(name) && car(name) == lambda_s) + return func_interp(env, name); eval_error(form, lit("no function exists named ~s"), name, nao); + } return cdr(fbinding); } -- cgit v1.2.3