gpt4 book ai didi

lisp - 使用 cond 的简单 defun 编译器错误

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:09 25 4
gpt4 key购买 nike

我正在 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

最佳答案

来自完整的编译错误

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

您的代码不同:

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

您可能在测试期间更改了代码。

在您的实际代码中,您使用变量 the-test

在编译器错误中,函数尝试调用函数(the-test)

关于lisp - 使用 cond 的简单 defun 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19721781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com