在Haskell中的结构共享矢量

时间:2014-08-15 01:28:42

标签: haskell clojure

Haskell结构中的Vector是否共享?在Clojure中,修改(immutable)vector只需要O(log n)时间,因为它实际上是一个类似trie的结构。 (http://hypirion.com/musings/understanding-persistent-vector-pt-1

Haskell中是否有等效的实现?

1 个答案:

答案 0 :(得分:8)

Data.Vector是带有O(n)修改的普通数组。

当时没有相当于Clojure的载体。

Data.Sequence实现为指树,它支持比Clojure向量更广泛的渐近有效运算(O(log(n))级联和分裂,O(1)读/写两端),但它也是一个更重量级的数据结构,具有更多的RAM使用和一些不断的开销。