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

时间:2012-01-04 17:00:20

标签: haskell data-structures

我有兴趣编写一个可以处理内存块的虚拟机。我想用一个纯数据结构来建模内存块(比如说1MB),这个结构在块内的任何地方都可以高效地进行读写操作。对可变结构不太感兴趣。这样的结构是否存在?

2 个答案:

答案 0 :(得分:8)

vector包提供了不可变(和可变)的盒装和无盒装载体,具有您期望的所有时间复杂性。可变的可以从IO和ST中使用,并且您可以拥有任何可存储实例的未装箱数组。它比标准阵列模块好很多。

但是,由于您提到了有效的不可变更新,我建议使用类似Map的数据结构;也许是来自unordered-containers的HashMap。在树叶上放置一个带有小的未装箱矢量的地图甚至是值得的,以避免一些树的开销。

根据您的用例,您可能还会对标准Data.Sequence感兴趣,它对开头和结尾都有O(1)访问权限,并且在序列中间有非常好的访问时间。< / p>

答案 1 :(得分:0)

Data.Array.ST对您来说是否足够好?