cond变量没有值

时间:2019-05-02 08:58:00

标签: syntax lisp common-lisp

我是新手。 我只想创建一个简短的程序。 它是关于测试条件并在条件成立时执行某些操作。 因此,如果3模2不正确(显然不正确),我想打印7 + 9 + 11的结果。 我收到错误***-COND:变量/ =没有值。

我已经尝试将cond更改为when。但这没用,我得到了同样的错误。

(cond(/ = 0(mod 3 2))

做(+ 7 9 11)

我希望结果是27,而不是错误。

1 个答案:

答案 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