【发布时间】:2016-12-30 21:34:28
【问题描述】:
我需要一个具有最快功能更新的类数组数据结构。我已经看到了一些灵活数组的不同实现,它们为我提供了这个属性(Braun,随机访问列表),但我想知道是否有专门针对我们对追加或前置不感兴趣的情况进行优化的实现- 只是更新。
【问题讨论】:
-
肯定是某种地图?
-
@DominicBou-Samra 一张不可变的地图?不会比数组还贵吗?
-
Dominic、地图、Braun 和 RAL 都是基于树的。我正在寻找是否可以与命令式数组(未变异)进行一些巧妙的组合,可以击败基于纯树的数据结构。
-
我想 HAMT (en.wikipedia.org/wiki/Hash_array_mapped_trie) 对你来说可能是个不错的选择。它基本上类似于 Haskell 的
IntMap,但通常呈现出更像数组的接口(参见例如 Scala 的 Vector 类或其在 Clojure 中的对应类) -
copumpkin:作为 OCaml 的 HAMT 实现的主题评论已发布 just a few days ago。请参阅我的答案以获得更简单的持久数组实现,接近 Michael Day 提到的“版本数组”。
标签: haskell data-structures functional-programming ocaml immutability