Haskell懒惰打开和关闭文件

Woj*_*ilo 5 io haskell file lazy-evaluation

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

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

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

我希望能够使用Haskell遍历此图并加载到内存并仅反序列化所需的文件.因此,如果我以例如A->B->C(其中B是子A等)的方式遍历图形,那么Haskell应该读取文件A.node,A/B.node并且A/B/C.node.下次我遍历图表时,应该再次读取文件,因为我们已经完成了.

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

Joa*_*ner 2

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

查看目录树,尤其是该readDirectoryWithL函数。