Haskell:有效模拟内存块的纯数据结构?

标签 haskell data-structures

我有兴趣编写一个使用内存块的虚拟机。我想使用纯数据结构对内存块(例如 1MB)进行建模,该结构对于 block 内任何位置的读写仍然有效。对可变结构不太感兴趣。这样的结构存在吗?

最佳答案

vector包提供不可变(和可变)装箱和未装箱向量,具有您期望的所有时间复杂度。可变的可以从 IO 和 ST 中使用,并且您可以拥有任何 Storable 实例的未装箱数组。它比标准数组模块好得多。

但是,既然您提到了高效的不可变更新,我建议使用类似 Map 的数据结构;也许是来自 unordered-containers 的 HashMap 。甚至可能值得在叶子处拥有一张带有小型未装箱矢量的 map ,以避免一些树开销。

根据您的用例,您可能还对标准 Data.Sequence 感兴趣,它对开头和结尾的访问时间为 O(1),并且对序列中间的访问时间相当长。

关于Haskell:有效模拟内存块的纯数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730739/

相关文章:

haskell - 如何使用 Yesod 的 Persistent 创建带有子数组的 MongoDB 文档?

haskell - agda 中的已知模式匹配

haskell:在 ghc 之间切换(对于不同的基础)有哪些好方法?

java - 在 Android 中使用 Hashmap 存储伪无限游戏世界时内存不足

c - 在循环链表开头插入

performance - 为什么 Haskell 函数执行时间测量与 ghc 计时不同?

json - 在 Haskell 中将 JSON 字符串解析为记录

search - 维基百科的搜索是如何进行的?

c# - 使用二叉树将中缀转换为后缀

c# - 改进具有双重属性的数据结构