我是新手。 我只想创建一个简短的程序。 它是关于测试条件并在条件成立时执行某些操作。 因此,如果3模2不正确(显然不正确),我想打印7 + 9 + 11的结果。 我收到错误***-COND:变量/ =没有值。
我已经尝试将cond更改为when。但这没用,我得到了同样的错误。
(cond(/ = 0(mod 3 2))
做(+ 7 9 11)
)
我希望结果是27,而不是错误。
答案 0 :(得分:1)
您似乎正在尝试输入这样的程序。
(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
。