clojure列表操作结果不相等

clojure列表操作结果不相等,clojure,Clojure,我测试了一些列表操作,发现了两种语法的差异 (conj (cons 321321 [1]) 123123123) => (123123123 321321 1) 及 为什么这些结果不相等?因为你在做不同的事情 cons 返回一个新的seq,其中x是第一个元素,seq是 其余的 conj 返回带有xs的新集合 “添加”。(无项)返回(项)可能会出现“添加” 发生在不同的“地方”,具体取决于混凝土类型。 在第一个示例中,您是在“预加”一个新条目(conj添加到序列的最简单方式),在第二个示例

我测试了一些列表操作,发现了两种语法的差异

(conj (cons 321321 [1]) 123123123)
=> (123123123 321321 1)


为什么这些结果不相等?

因为你在做不同的事情

cons

返回一个新的seq,其中x是第一个元素,seq是 其余的

conj

返回带有xs的新集合 “添加”。(无项)返回(项)可能会出现“添加” 发生在不同的“地方”,具体取决于混凝土类型。

在第一个示例中,您是在“预加”一个新条目(conj添加到序列的最简单方式),在第二个示例中,您是在“附加”一个向量(conj添加的最简单方式)

注意,您正在使用
[…]
下一步

user=> (.getClass [321312 1])
clojure.lang.PersistentVector
user=> (.getClass (conj [321312 1] 123123123))
clojure.lang.PersistentVector
谢谢,(conj(seq[12 3])4),这个例子是你的解释
user=> (.getClass (cons 321321 [1]))
clojure.lang.Cons
user=> (.getClass (conj (cons 321321 [1]) 123123123))
clojure.lang.Cons
user=> (.getClass [321312 1])
clojure.lang.PersistentVector
user=> (.getClass (conj [321312 1] 123123123))
clojure.lang.PersistentVector