位标志数组的数据结构是什么?

Seb*_*raf 5 arrays haskell bitflags

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

在像C这样的语言中,我只需要分配一个字节数组,将它们归零并随时更新它们.我如何在Haskell中有效地完成这项工作?

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

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

And*_*ács 9

用于装箱阵列执行Bool在-s 阵列是填充bitarray.您可以在ST Monad中对此类数组执行可变更新(这与C中的运行时行为基本相同).


gsp*_*spr 6

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