2

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

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
4

1 回答 1

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

于 2012-07-12T15:22:52.970 回答