我最近开始学习Haskell。我有这个代码
module Main
where
import IO
main = do
hSetBuffering stdin LineBuffering
putStrLn "Please enter your name: "
name <- getLine
putStrLn ("Hello, " ++ name ++ ", how are you?")
我将 GHC 编译器与 notepad++ 编辑器一起使用。问题是交互是这样的:
block 引用>Process started >>>
Vlad
Please enter your name:
Hello, Vlad, how are you?
<<< Process finished.如您所见,只有在我输入内容后才会写入输出。这有点出乎我的意料,因为我确信程序会首先询问我的名字,然后我输入它,然后它会打招呼。好吧,如果我手动运行 exe,这正是会发生的情况,但如果我使用 notepad++ 运行它并使用其控制台包装器,则不会发生...
如何让 notepad++ 在应该的时候显示输出,而不是在程序终止之前显示全部输出?这可能吗?
最佳答案
尝试将stdout设置为LineBuffering!另外,在 ghci 中加载程序而不是运行编译版本似乎根本不需要任何缓冲...
顺便说一句,我不知道 NPP 中的控制台 - 感谢您向我指出!
关于notepad++ 中的 Haskell 控制台 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802653/