假设我们有一个简短的haskell程序:
main = do putStr "2 + 2 = "
x <- readLn
if x == 4
then putStrLn "Correct"
else putStrLn "Wrong"
Run Code Online (Sandbox Code Playgroud)
它产生了什么输出?
4
2 + 2 =正确
现在让我们有另一个:
main = do putStrLn "2 + 2 = "
x <- readLn
if x == 4
then putStrLn "Correct"
else putStrLn "Wrong"
Run Code Online (Sandbox Code Playgroud)
这产生了
2 + 2 =
4
正确
其中粗体4是用户输入的.
任何熟悉Haskell的人都可以向我解释为什么会这样吗?我如何获得所需的结果,即
2 + 2 = 4
正确
Mat*_*hid 13
线缓冲.在写入完整的文本行之前,不会"刷新"输出缓冲区.
两种解决方案
putStr其次是hFlush stdout.)hSetBuffering stdout NoBuffering.)| 归档时间: |
|
| 查看次数: |
1901 次 |
| 最近记录: |