在Haskell中从文件读取到数组

时间:2013-03-05 19:08:04

标签: haskell io binary

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

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

如何在Haskell中执行相同操作(从文件读取数组或向量)?我能想到的最好的方法就是像往常一样读取文件,然后将四个字节中的字节取出来并按算术一起按摩它们,但这非常难看,并且还会引入对字节序的依赖。

1 个答案:

答案 0 :(得分:3)

  

编码为比特打包的4字节trie节点的连续数组

我认为这里的'编码'是一些Python格式?你说“原始C风格阵列”?

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

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

对于真正的原始数据,您可以mmap it to a bytestring,然后将其进一步处理为数据结构。