5

我想从 Haskell 的硬盘中读取一个大的图形结构。图结构如下所示:

每个节点都有一个定义 - 一个描述什么是子节点以及它们如何连接的文件(这些图使用Data.Serialize.

每个节点都可以有孩子。因此,如果我有文件A.node,我可以拥有A包含节点子A节点的目录(以<X>.node文件和目录的形式)。

我希望能够使用 Haskell 遍历此图并加载到内存并反序列化仅需要的文件。因此,例如,如果我以(等的孩子A->B->C在哪里)的方式遍历图形,那么 Haskell 应该读取文件,和。下次我遍历图表时,不应再次读取文件因为我们已经这样做了。BAA.nodeA/B.nodeA/B/C.node

我怎样才能以最好的方式做到这一点?

4

1 回答 1

2

有些库会为您提供代表完整目录树的纯值,并且只会读取实际使用的目录和文件。凭借惰性评估,您第二次访问此类文件时,它已经在内存中。

查看directory-tree,尤其是readDirectoryWithL函数。

于 2013-07-10T13:53:08.940 回答