Haskell结构中的Vector
是否共享?在Clojure中,修改(immutable)vector
只需要O(log n)时间,因为它实际上是一个类似trie的结构。 (http://hypirion.com/musings/understanding-persistent-vector-pt-1)
Haskell中是否有等效的实现?
答案 0 :(得分:8)
Data.Vector
是带有O(n)修改的普通数组。
当时没有相当于Clojure的载体。
Data.Sequence
实现为指树,它支持比Clojure向量更广泛的渐近有效运算(O(log(n))级联和分裂,O(1)读/写两端),但它也是一个更重量级的数据结构,具有更多的RAM使用和一些不断的开销。