2

我的驱动器上有一个基于 trie 的字典,它被编码为位压缩的 4 字节 trie 节点的连续数组。在 Python 中,我会通过以下方式将其读取到一个实际的 4 字节整数数组中:

import array
trie = array.array('I')
try:
    trie.fromfile(open("trie.dat", "rb"), some_limit)
except EOFError:
    pass

如何在 Haskell 中做同样的事情(从文件读取到数组或向量)?我能想到的最好的办法是像往常一样读取文件,然后以四个为一组的字节获取字节,并在算术上将它们组合在一起,但这非常难看,而且还引入了对字节序的依赖。

4

1 回答 1

3

编码为位压缩的 4 字节 trie 节点的连续数组

我认为这里的“编码”是某种 Python 格式?你说“原始 C 风格的数组”?

要将此二进制(或任何其他格式)的数据加载到 Haskell 中,您可以使用Data.Binary库,并为您的自定义格式提供Binary 的实例。

对于许多现有的数据交换格式,Hackage 上有一些库,但是您需要指定格式。例如图像数据,有repa-devil

对于真正的原始数据,您可以将其映射到 bytestring,然后将其进一步处理为数据结构。

于 2013-03-06T08:42:56.143 回答