为什么这个小的Lisp表达式不起作用?

时间:2014-02-17 20:37:16

标签: lisp

对我来说这是Lisp的第一天。我试图最终写一个if else声明......希望今年某个时候。我不确定为什么这会给我一个错误?

(cond (< 1 2) (print "hey"))

为什么会崩溃?它说变量'&lt;'没有约束?我根本没有得到Lisp ...先谢谢。

1 个答案:

答案 0 :(得分:4)

cond列出了一系列测试和条款

(cond (<test>  <if test is true>)
      (<test2> <if test2 is true>)
      ...)

我认为你打算写的是

(cond ((< 1 2) (print "hey"))) ;; if 1 is less than 2, print "hey"

你在问题​​中实际得到的是

(cond (< 1 2)        ;; if `<` is bound as a variable, return 2
      (print "hey")) ;; if `print` is bound as a variable, return "hey"

默认情况下,这些符号都没有在变量名称空间中定义,因此您将收到错误。

如果您只有一个表单可以发送,并且只是想要做某些事情,那么使用whencond更常见。

(when (< 1 2) (print "hey"))