5

我正在将一些命令式代码移植到 Haskell。我的目标是分析一个可执行文件,因此文本部分的每个字节都被分配了一些标志,这些标志都适合一个字节(准确地说是 6 位)。

在像 C 这样的语言中,我只需分配一个字节数组,将它们归零并随时更新它们。我将如何在 Haskell 中有效地做到这一点?

换句话说:我正在寻找一个具有按位访问和恒定时间更新的 ByteString,因为我反汇编了更多的文本部分。

编辑:当然,如果它同样有效,任何其他类型的数据结构都可以。

4

2 回答 2

9

Bool数组中-s的未装箱数组的实现打包位数组。您可以在ST Monad中对此类数组进行可变更新(这与 C 中的运行时行为基本相同)。

于 2014-10-11T08:54:07.677 回答
6

Bits您可以将向量与作为typeclass实例的任何数据类型一起使用,例如Word64向量中每个元素的 64 位。如果您希望数组在内存中是连续的,请使用未装箱的向量。

于 2014-10-11T08:50:42.927 回答