-1

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
4

1 に答える 1

3

完全なコンパイラ エラーから

(DEFUN IFELSE (THE-TEST)
 (COND ((THE-TEST) ...

あなたのコードは異なります:

(defun ifelse (the-test)
  (cond (the-test ...

テスト中にコードを変更した可能性があります。

実際のコードでは、変数the-testを使用します

コンパイラ エラーで、関数は関数を呼び出そうとしました(the-test)

于 2013-11-01T07:19:26.263 に答える