-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不同?因为它们是不同的结构。检查文档的语法。 –