在Haskell中,如何刷每行的Data.Text?

时间:2014-04-17 21:02:12

标签: haskell text

如何在交互式输入的情况下更改此程序以立即处理每行文本?最好刷新缓冲每个换行符。

main = do
  input <- T.getContents
  mapM_ T.putStrLn $ T.lines input

更新:仍然缺少某些东西。看一下(????在换行后,stdout在stdin上达到EOF后打印出来:

> cat Test.hs
import System.IO
import Data.Text as T
import Data.Text.IO as T

main = do
    hSetBuffering stdout LineBuffering
    input <- T.getContents
    mapM_ T.putStrLn $ T.lines input
> runhaskell Test.hs
a
????
a
????
> runhaskell --version
runghc 7.6.3
>

2 个答案:

答案 0 :(得分:7)

您想使用hSetBuffering中的System.IO

import System.IO

main = do
    hSetBuffering stdout LineBuffering
    input <- T.getContents
    mapM_ T.putStrLn $ T.lines input

答案 1 :(得分:0)

好像你想使用延迟输入交错阅读行并处理它们。

来自getContents

Data.Text.IO 懒惰,并会在返回任何内容之前阅读所有内容。

Data.Text.Lazy.IO导入版本。