gpt4 book ai didi

Clojure - 为什么 into 对列表的行为不同于对向量的行为?

转载 作者:行者123 更新时间:2023-12-02 07:32:42 26 4
gpt4 key购买 nike

当插入的集合不同时,为什么 into 的行为不同?例如:

user=> (into [] [1 2 3])
[1 2 3]

到目前为止,还不错。完全符合我的预期。然而:

user=> (into () [1 2 3])
(3 2 1)

为什么这会颠倒论点?我假设这是为了性能,并且项目是按顺序插入的cons?这似乎仍然打破了我的抽象,在两个不同类型的有序集合中,我希望结果能够一致地排序。

最佳答案

intoconjseq 在一起。

conj 在开头添加到列表,在末尾添加向量以提高效率,这样就不需要遍历任何一种类型来添加它。

这在 Programming Clojure 中有很好的解释在谈论 Clojure 中的集合抽象时:

These functions (conj/seq/count/empty/=) are all polymorphic with regard to the concrete type of collection being operated upon. Said another way, each operation provides semantics consistent with the constraints of each data structure implementation.

关于Clojure - 为什么 into 对列表的行为不同于对向量的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com