Clojure:“=”比较集合中的值,为什么不能在这种情况下比较两个列表?

时间:2012-07-29 01:45:27

标签: clojure lisp

见这个例子:

Clojure 1.4.0
user=> (def a 1)
#'user/a
user=> (def b 2)
#'user/b
user=> (= [1 2] [a b])
true
user=> (= '(1 2) '(1 2))
true
user=> (= '(1 2) '(a b))
false

为什么最后一个案例不起作用,如何在不必将列表转换为向量的情况下使最后一个案例工作?

谢谢!

1 个答案:

答案 0 :(得分:15)

您正在比较包含1&的列表2列表包含符号a&湾符号是Clojure中的合法值。 '(a b)相当于(列出'a'b)(列出a b)。

 (= '(1 2) (list a b))

可能是您想要的比较。