我知道cons
返回一个序列,而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
表现不同,或者它们真正可以互换?换句话说,是否存在一个示例,其中列表和序列不能等效使用?
conj
同理)。 - Michał Marczyk