2013-08-03 49 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