-1
簡單defun定義我想一些基本的東西了在CL,不明白爲什麼這個不能編譯,編譯器錯誤:使用COND
(defun ifelse (the-test)
(cond ((the-test) (format t "passed test"))
(t (format t "failed test"))))
編譯器說:
; caught STYLE-WARNING:
; undefined function: THE-TEST
我已經做了類似與if
無故障:
(defun test-if (the-test)
(if the-test
(format t "passed")
(format t "failed")))
編譯器不抱怨。 cond
不會以同樣的方式工作,因爲它們都測試條件?
; in: DEFUN IFELSE
; (DEFUN IFELSE (THE-TEST)
; (COND ((THE-TEST) (FORMAT T "passed test, true!"))
; (T (FORMAT T "failed test, boo hoo"))))
; --> PROGN EVAL-WHEN
; ==>
; (SB-IMPL::%DEFUN 'IFELSE
; (SB-INT:NAMED-LAMBDA IFELSE
; (THE-TEST)
; (BLOCK IFELSE (COND (# #) (T #))))
; NIL 'NIL (SB-C:SOURCE-LOCATION))
;
; caught STYLE-WARNING:
; The variable THE-TEST is defined but never used.
; (THE-TEST)
;
; caught STYLE-WARNING:
; undefined function: THE-TEST
;
; compilation unit finished
; Undefined function:
; THE-TEST
; caught 2 STYLE-WARNING conditions
哪個實現的Common Lisp您使用的是?你還有什麼涉及'the-test'的定義/編譯?您的代碼在SBCL中編譯並運行時沒有警告或其他問題。 –
@TerjeD。我更新了questin。 – johnbakers
您可能希望在錯誤消息和問題中具有相同的源代碼。目前它是不同的。 爲什麼COND與IF不同?因爲它們是不同的結構。檢查文檔的語法。 –