CLでいくつかの基本的なことを試していますが、これがコンパイルされない理由がわかりません:
(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