2013-08-03 50 views
1

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

* (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 

回答

3

这是一本介绍Common Lisp的:http://www.cs.cmu.edu/~dst/LispBook/

您可能还需要阅读有关FUNCALL

+0

+1感谢提到'funcall'。这是否意味着'funcall'不会进行静态类型检查? (有没有办法在确保静态类型检查的同时调用lambdas?) – Mehrdad

+2

@mehrdad:funcall是一个函数。 '函数'不做'静态类型检查'。编译器可能会。但是,你需要告诉编译器关于类型的一些东西。你确定要使用Lisp吗? –

+0

那么,介绍我到SBCL的是[这个答案](http://stackoverflow.com/questions/18031009),但它似乎不像我预期的那样工作。谢谢(你的)信息。 – Mehrdad