【发布时间】:2016-08-10 03:10:59
【问题描述】:
我正在通过以下方式打开一些 .txt 文件:
main :: IO ()
main = do
xxs <- TIO.readFile pathToFile
return ()
.txt 文件的格式为
str_1 \n str_2 \n ... str_m
我想将 xxs 制作成一个源代码,这样它可能看起来像:
sourceList [str_1, str_2, ..., str_m]
管道 API 是否提供了一种无需先对xxs 进行字符串操作的方法,从而使其成为[str_1, str_2, ..., str_m] 的形式?
【问题讨论】:
-
使用
lines将xxs分解为行列表怎么样?见Breaking into lines and words -
您是仅使用“管道”寻找答案,还是像标签暗示的那样,您是否也使用“管道”来寻找答案?
-
如果
TIO指的是 Data.Text.Lazy.IO,那么是的。如果TIO指的是Data.Text.IO,那么readFile会将整个文件读入内存。在任何一种情况下,lines仍然会延迟构建行列表,这将允许一次只有一行驻留在内存中。 -
也许您正在寻找来自 Data.Conduit.Text 的
lines:hackage.haskell.org/package/conduit-1.0.2/docs/… -
为什么要把它做成一个列表?只需编写您赢得的管道函数即可在没有内存泄漏的情况下对其进行流式传输:stackoverflow.com/a/38864188/1651941
标签: haskell conduit haskell-pipes