(= [:a:b](list:a:b))在clojure中返回true?

thi*_*rou 2 clojure

在Clojure中,(= [:a :b] (list :a :b))返回true,但(= [:a :b] (:a :b))返回false.为什么?

我想(list :a :b)是的(:a :b),所以都不应该回归true.

ama*_*loy 7

(f x)要求f用参数调用函数x.因此,作为一个函数(:a :b)调用:a,:b作为其参数.实际上做的事情目前并不是非常重要,但它肯定不会(:a :b)以这样的方式返回列表(list :a :b).如果您想将列表视为数据结构而不是函数调用,则可以quote通过(quote (:a :b)).要获得有关引用的更多详细信息,您可以阅读何时使用Lisp中的引用 - 它不是Clojure特定的,但仍然相关.