我是 lisp 的新手。 我只想制作一个短节目。 它是关于测试条件并在条件为真时做某事。 因此,如果 3 modulo 2 不成立(显然不成立),我想打印 7+9+11 的结果。 我收到错误 *** - COND:变量/= 没有值。
我已经尝试将 cond 更改为 when。但它没有用,我得到了同样的错误。
(cond (/= 0 (mod 3 2 ))
做 (+ 7 9 11)
)
我希望结果是 27 而不是错误。
最佳答案
看来您正在尝试进入这样的程序。
(if (/= 0 (mod 3 2))
(+ 7 9 11))
这里,if
的语法如下
(if (PREDICATE)
(RETURN-IF-PREDICATE-TRUE)
(RETURN-IF-PREDICATE-FALSE))
如果未提供,RETURN-IF-PREDICATE-FALSE
默认为 nil
。
如果你更喜欢使用cond
,那么你可以这样做
(cond
((/= 0 (mod 3 2)) (+ 7 9 11)))
这里,cond
的语法如下
(cond
((P1) (R1))
((P2) (R2))
...
)
如果谓词 P1
为真,则返回 R1
。否则测试下一个谓词,依此类推。
如果您的代码,您的 cond
缺少几个括号。一般来说,你正在做
;; (incorrect code)
(cond
(P1) do (+ 7 9 11))
谓词-结果对和 do 宏周围缺少括号。
此外,没有理由在这里使用do
。
关于syntax - cond 变量没有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55948895/