为什么 Clojure 应用处理向量与列表不同?



我很好奇为什么要应用的第一个参数(以及reduce)会影响函数的行为,如下面的代码片段所示。

user=> (apply conj '() [1 2 3])
(3 2 1)
user=> (apply conj [] [1 2 3])
[1 2 3]
user=> (apply conj '() '(1 2 3))
(3 2 1)
user=> (apply conj [] '(1 2 3))
[1 2 3]

您的问题是关于conj的行为,而不是apply的行为。

Conj将项目添加到列表的前面和向量的末尾。

请参阅:http://clojure.org/data_structures

不是applyreduce修改conj的行为。CCD_ 4本身具有多态性。它以给定数据结构中最有效的方式添加元素。

相关内容

  • 没有找到相关文章