【发布时间】:2012-10-01 13:57:17
【问题描述】:
如何使用恒定内存懒惰地将多个文件作为单个 ByteString 读取?
readFiles :: [FilePath] -> IO ByteString
我目前有以下实现,但根据我从分析中看到的以及我的理解,我将以内存中文件的n-1 结尾。
readFiles = foldl1 joinIOStrings . map ByteString.readFile
where joinIOStrings ml mr = do
l <- ml
r <- mr
return $ l `ByteString.append` r
我知道这里的缺陷是我正在应用 IO 操作然后重新包装它们,所以我认为我需要一种在不应用它们的情况下替换 foldl1 joinIOStrings 的方法。
【问题讨论】:
标签: haskell file-io io lazy-evaluation lazy-sequences