gpt4 book ai didi

Haskell - putStr 与 putStrLn 和指令顺序

转载 作者:行者123 更新时间:2023-12-02 10:31:25 25 4
gpt4 key购买 nike

假设我们有一个简短的 haskell 程序:

main = do putStr "2 + 2 = "
x <- readLn
if x == 4
then putStrLn "Correct"
else putStrLn "Wrong"

它产生什么输出?

4

2 + 2 = Correct

现在让我们再来一个:

main = do putStrLn "2 + 2 = "
x <- readLn
if x == 4
then putStrLn "Correct"
else putStrLn "Wrong"

产生

2 + 2 =

4

Correct

其中粗体 4 是用户输入的。

任何熟悉 Haskell 的人都可以向我解释一下这是为什么吗?我怎样才能得到想要的结果,即

2 + 2 = 4

Correct

最佳答案

行缓冲。在写入完整的文本行之前,输出缓冲区不会“刷新”。

两种解决方案:

  1. 手动刷新缓冲区。 (putStr 后跟 hFlush stdout。)
  2. 关闭缓冲。 (hSetBuffering stdout NoBuffering。)

关于Haskell - putStr 与 putStrLn 和指令顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21853343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com