Lambda 为什么这是SBCL中的错误?

Lambda 为什么这是SBCL中的错误?,lambda,common-lisp,sbcl,Lambda,Common Lisp,Sbcl,为什么这是SBCL中的错误?如何调用传递给函数的lambda * (defun call-foo (foo) (foo)) ; in: DEFUN CALL-FOO ; (SB-INT:NAMED-LAMBDA CALL-FOO ; (FOO) ; (BLOCK CALL-FOO (FOO))) ; ; caught STYLE-WARNING: ; The variable FOO is defined but never used. ; in: DE

为什么这是SBCL中的错误?如何调用传递给函数的lambda

* (defun call-foo (foo) (foo))
; in: DEFUN CALL-FOO
;     (SB-INT:NAMED-LAMBDA CALL-FOO
;         (FOO)
;       (BLOCK CALL-FOO (FOO)))
;
; caught STYLE-WARNING:
;   The variable FOO is defined but never used.

; in: DEFUN CALL-FOO
;     (FOO)
;
; caught STYLE-WARNING:
;   undefined function: FOO
;
; compilation unit finished
;   Undefined function:
;     FOO
;   caught 2 STYLE-WARNING conditions

CALL-FOO

这是对Common Lisp的介绍:


你可能还想读一下

+1感谢您提及
funcall
。这是否意味着
funcall
不进行静态类型检查?(有没有办法在确保静态类型检查的同时调用lambdas?@mehrdad:funcall是一个函数。”函数“不执行”静态类型检查。编译器可能会。但是你需要告诉编译器一些关于类型的事情。你确定要使用Lisp吗?嗯,是什么让我认识SBCL的,但它似乎不像我预期的那样工作。谢谢您提供的信息。@Mehrdad,SBCL与任何编译器一样,必须遵循,并且根据此标准,在将函数作为参数传递时必须使用。在寻找额外的编译器特征,例如类型推断(这不是标准中强制性的,甚至我没有提到的),您可以考虑首先学习语言。