如何在交互式输入的情况下更改此程序以立即处理每行文本?最好刷新缓冲每个换行符。
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
>
答案 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
导入版本。