putStr来自GHC,Mac OS X的编译二进制文件

时间:2013-11-18 13:34:37

标签: haskell io executable ghc

使用此文件:

main = do
  putStr "Input: "
  s <- getLine
  putStr s

它在GHCi中执行我想要的操作,即提示然后允许输入与提示在同一行。如果我编译它并在终端中运行可执行文件,我将在输入之后才会看到提示。关于新线的一些事情。我使用的是Mac OS 10.8.5,GHC 7.4.2。

是否需要切换终端设置或GHC选项以从可执行文件中获取我想要的行为?

2 个答案:

答案 0 :(得分:7)

您需要使用hSetBuffering

中的System.IO
main = do
    hSetBuffering stdout NoBuffering
    putStr "Input: "
    s <- getLine
    putStr s

答案 1 :(得分:1)

为了完整性:您还可以hFlush stdout将部分行显式刷新为文件。

但是,是的,对于您的情况,接受的答案几乎肯定是最合理的方式。