diff --git a/lisp/kernel.gl b/lisp/kernel.gl index 225314a..a4b74af 100644 --- a/lisp/kernel.gl +++ b/lisp/kernel.gl @@ -1,4 +1,3 @@ ;; -*- mode: lisp-data -*- -(print (funcall (let ((te 'a)) - (lambda (b &optional (a te ap)) a)) 2 3)) +(print ((lambda (a) a) 1)) diff --git a/src/function.c b/src/function.c index 15b91d2..5fe0615 100644 --- a/src/function.c +++ b/src/function.c @@ -477,6 +477,8 @@ DEFUN(funcall, "funcall", (LispVal * func, LispVal *args), "(func &rest args)", LispFunction *fobj = func; if (SYMBOLP(func)) { fobj = Fsymbol_function(func, Qt); + } else if (CONSP(func) && EQ(XCAR(func), Qlambda)) { + fobj = Feval(func, TOP_LEXENV()); } // include symbol here for the error message CHECK_TYPE(fobj, TYPE_FUNCTION, TYPE_SYMBOL);