对我来说这是Lisp的第一天。我试图最终写一个if else声明......希望今年某个时候。我不确定为什么这会给我一个错误?
(cond (< 1 2) (print "hey"))
为什么会崩溃?它说变量'&lt;'没有约束?我根本没有得到Lisp ...先谢谢。
答案 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"
默认情况下,这些符号都没有在变量名称空间中定义,因此您将收到错误。
如果您只有一个表单可以发送,并且只是想要做某些事情,那么使用when
比cond
更常见。
(when (< 1 2) (print "hey"))