使用此文件:
main = do
putStr "Input: "
s <- getLine
putStr s
它在GHCi中执行我想要的操作,即提示然后允许输入与提示在同一行。如果我编译它并在终端中运行可执行文件,我将在输入之后才会看到提示。关于新线的一些事情。我使用的是Mac OS 10.8.5,GHC 7.4.2。
是否需要切换终端设置或GHC选项以从可执行文件中获取我想要的行为?
答案 0 :(得分:7)
您需要使用hSetBuffering
System.IO
main = do
hSetBuffering stdout NoBuffering
putStr "Input: "
s <- getLine
putStr s
答案 1 :(得分:1)
为了完整性:您还可以hFlush stdout
将部分行显式刷新为文件。
但是,是的,对于您的情况,接受的答案几乎肯定是最合理的方式。