我知道 cons
返回一个 seq,而 conj
返回一个集合。我还知道,conj
“添加”项目的最佳结束的集合,和 cons
总是“添加”项目的前面。这个例子说明了这两点:
user=> (conj [1 2 3] 4) ; returns a collection
[1 2 3 4]
user=> (cons 4 [1 2 3]) ; returns a seq
(4 1 2 3)
对于向量、映射和集合,这些差异对我来说是有意义的。但是,对于列表,它们看起来是相同的。
user=> (conj (list 3 2 1) 4) ; returns a list
(4 3 2 1)
user=> (cons 4 (list 3 2 1)) ; returns a seq
(4 3 2 1)
有没有使用列表的例子,其中 conj
与 cons
表现出不同的行为,或者他们真的可以互换?用不同的措辞,是否有一个列表和序列不能等效使用的例子?