file - Haskell 延迟打开和关闭文件

标签 file haskell io lazy-evaluation

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

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

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

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

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

最佳答案

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

退房 directory-tree ,尤其是 readDirectoryWithL 功能。

关于file - Haskell 延迟打开和关闭文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17570281/

相关文章:

python - 从文件读取: find the new line

java - 如何使用 getCodeBase() 在 Java Applet 中查找并加载文件?

haskell - 如何编写比较器链接函数?

java - Java中如何读取文件

java - 配置:错误:找不到java包含文件

java - 正则表达式..将字符串数组分割两次

解析函数与Happy的应用

haskell - 如何在 Haskell 中将 Unicode 转义序列转换为 Unicode 字符串

java - 在 Java 中从 PNG 到 JPG 的转换将白色变为红色

c - 使用 scanf() 停止控制台输入