将Data.Text.Lazy.Text转换为Data.Text.Text类型的行列表

时间:2012-07-12 15:08:48

标签: haskell

我想知道将懒惰文本转换为由行结尾分割的严格文本列表的首选方法是什么。我想出了类似下面的内容,但我不确定我是否保证每个严格的文本元素都是完整的一行(或者如果还有其他问题):

import qualified Data.Text.Lazy as LT

readLines filePath = do
    contents <- Data.Text.Lazy.IO.readFile filePath
    let lines = concat (map LT.toChunks (LT.lines contents))
    return lines

1 个答案:

答案 0 :(得分:2)

readLines filePath = do
    contents <- Data.Text.Lazy.IO.readFile filePath
    let lines = concat (map LT.toChunks (LT.lines contents))
    return lines

不保证每个严格的块都是一个完整的行。实际上,每当惰性Text的块边界与行边界不一致时,就会得到一条至少包含两个严格块的行。

readLines filePath = do
    contents <- Data.Text.Lazy.IO.readFile filePath
    let lines = map (T.concat . LT.toChunks) (LT.lines contents)
    return lines
然而,

将每一行连接成一个严格的块。然而,连接可能比使用每一行作为严格块的列表更慢。一个懒惰的Text