我知道这会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
vs. cons
表现出不同的行为,或者它们是否真正可互换?用不同的措词,是否有一个示例,其中列表和seq不能等效使用?