我最近开始学习Haskell.我有这个代码
module Main
where
import IO
main = do
hSetBuffering stdin LineBuffering
putStrLn "Please enter your name: "
name <- getLine
putStrLn ("Hello, " ++ name ++ ", how are you?")
Run Code Online (Sandbox Code Playgroud)
我正在使用GHC编译器和notepad ++编辑器.问题是交互是这样的:
流程开始>>>
弗拉德
请输入你的名字:
你好,弗拉德,你好吗?
<<<流程完成.
如您所见,输出仅在我输入内容后写入.这有点出乎意料,因为我确信程序会首先询问我的名字,然后我会进入它然后它会打招呼.好吧,如果我手动运行exe就会发生这种情况,但是如果我用notepad ++运行它并使用它的控制台包装器就不行了......
如何让notepad ++显示输出,而不是在程序终止之前显示所有输出?这甚至可能吗?
尝试将stdout设置为LineBuffering!另外,在ghci中加载程序而不是运行已编译的版本似乎根本不需要任何缓冲...
顺便说一句,我不知道核电站的控制台 - 感谢你指点我!