符号的Clojure相等

符号的Clojure相等,clojure,symbols,equality,Clojure,Symbols,Equality,我在clojure项目上遇到了麻烦,我似乎找不到答案。我试图比较两个符号: 'x 'y 但当我使用: (= ('x 'y)) 这是真的。同样适用于: (identical? 'x 'y) 我发现相同的比较内存地址,但我没有发现为什么比较时“x”和“y”返回true?我没有看到过这样的问题,大多数其他帖子都比较数字。你是在比较一系列符号。如果只将一个参数传递给=,则默认情况下返回true。只需删除符号周围的括号,然后就可以比较符号本身了(='x'y)(=('x'y))你把('x'y)和什么

我在clojure项目上遇到了麻烦,我似乎找不到答案。我试图比较两个符号:

'x  'y
但当我使用:

(= ('x 'y))
这是真的。同样适用于:

(identical? 'x 'y)

我发现相同的比较内存地址,但我没有发现为什么比较时“x”和“y”返回true?我没有看到过这样的问题,大多数其他帖子都比较数字。

你是在比较一系列符号。如果只将一个参数传递给=,则默认情况下返回true。只需删除符号周围的括号,然后就可以比较符号本身了<代码>(='x'y)(=('x'y))你把
('x'y)
和什么比较?因为
(='x'y)
返回false.Ahhh,看来我的语法错了。谢谢。你调用'x作为函数。符号,如关键字,实现IFn以在映射中查找自己(当传递的不是映射时返回nil)。该列表没有引用,因此它实际上调用了“x”作为函数(请参见marivas的答案)。没有什么比自动解释代码更好的了,尤其是我的英语非常差;-)很抱歉
(= nil) ; => true

('x 'y) ; => nil

('x #{'x}) ; => 'x

('x #{'z} :one) ; => :one

(instance? clojure.lang.IFn 'x) ; => true