我很好奇为什么第一个应用(以及还原)的参数会影响函数的行为,如下面的代码片段所示。
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]
答案 0 :(得分:6)
答案 1 :(得分:5)
修改apply
的行为不是reduce
或conj
。 conj
本身就是多态的。它以给定数据结构的最有效方式添加元素。