2012-07-12 2 views
2

줄이 띄어쓰기로 분리 된 엄격한 텍스트 목록으로 게으른 텍스트를 변환하는 것이 바람직한 방법인지 궁금합니다. 나는 다음과 같은 것을 함께했다,하지만 각 엄격한 텍스트 요소는 전체 라인이 될 것이라는 점을 보장 (또는 다른 문제가있는 경우)하고있어 것을 확실하지 않다 :Data.Text.Lazy.Text를 Data.Text.Text 형식의 행 목록으로 변환합니다.

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 

답변

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.

+0

감사합니다. 게으른 텍스트로 직접 작업하는 것에 대한 귀하의 의견은 실제로 내가 원하는 행동 일 수 있습니다. – brooks94

관련 문제