我的驱动器上有一个基于trie的字典,它被编码为一个连续的4字节trie节点的连续数组。在Python中,我会通过以下方式将其读取为实际的4字节整数数组:
import array
trie = array.array('I')
try:
trie.fromfile(open("trie.dat", "rb"), some_limit)
except EOFError:
pass
如何在Haskell中执行相同操作(从文件读取数组或向量)?我能想到的最好的方法就是像往常一样读取文件,然后将四个字节中的字节取出来并按算术一起按摩它们,但这非常难看,并且还会引入对字节序的依赖。
答案 0 :(得分:3)
编码为比特打包的4字节trie节点的连续数组
我认为这里的'编码'是一些Python格式?你说“原始C风格阵列”?
要将此二进制文件(或任何其他格式)的数据加载到Haskell,您可以使用Data.Binary库,并为自定义格式提供an instance of Binary。
对于许多现有的数据交换格式,Hackage上有库,但是您需要指定格式。对于例如图片数据有repa-devil。
对于真正的原始数据,您可以mmap it to a bytestring,然后将其进一步处理为数据结构。