This question already has answers here:
IO happens out of order when using getLine and putStr
(3个答案)
7年前关闭。
假设我们有一个简短的haskell程序:
它产生什么输出?
现在让我们再来一个:
那产生
用户输入粗体4的位置。
熟悉Haskell的人可以向我解释为什么吗?
我如何获得理想的结果,这是
手动刷新缓冲区。 ( 关闭缓冲。 (
(3个答案)
7年前关闭。
假设我们有一个简短的haskell程序:
main = do putStr "2 + 2 = "
x <- readLn
if x == 4
then putStrLn "Correct"
else putStrLn "Wrong"
它产生什么输出?
现在让我们再来一个:
main = do putStrLn "2 + 2 = "
x <- readLn
if x == 4
then putStrLn "Correct"
else putStrLn "Wrong"
那产生
用户输入粗体4的位置。
熟悉Haskell的人可以向我解释为什么吗?
我如何获得理想的结果,这是
最佳答案
行缓冲。在写入完整的文本行之前,不会“清除”输出缓冲区。
两种解决方案:
putStr
后跟hFlush stdout
。)hSetBuffering stdout NoBuffering
。)09-28 08:51