如何在交互式输入的情况下更改此程序以立即处理每行文本?最好是每个换行符冲洗缓冲区.
main = do
input <- T.getContents
mapM_ T.putStrLn $ T.lines input
Run Code Online (Sandbox Code Playgroud)
更新:仍然缺少某些东西.看看(????在换行后,stdout在到达EOFstdin 后打印出来):
> 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
>
Run Code Online (Sandbox Code Playgroud)
你想用hSetBuffering来自System.IO:
import System.IO
main = do
hSetBuffering stdout LineBuffering
input <- T.getContents
mapM_ T.putStrLn $ T.lines input
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |