【发布时间】:2013-07-10 12:08:04
【问题描述】:
我想在 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。下次我遍历图表时,应该不再次读取文件,因为我们已经这样做了。
我怎样才能做到最好?
【问题讨论】:
-
你是想要懒惰地读取文件的内容还是只在需要时才打开文件?
-
如果可能的话,我想懒洋洋地打开和关闭文件。
-
@bennofs - 你说得对 - 我的问题不清楚 - 我已经编辑它以准确显示我正在尝试做的事情。
标签: file haskell io lazy-evaluation