Haskell - 在运行时获取输入

时间:2017-02-27 20:30:12

标签: haskell

我是Haskell的新手,我无法弄清楚如何在代码执行期间接受用户的输入。假设我输入以下代码:

import System.IO

main = do  
    putStrLn "Hi, what's your name?"  
    name <- getLine  
    putStrLn ("Hi " ++ name)

好吧,我希望文字"Hi, what's your name?"显示之前我输入我的名字,然后在之后打印第二行"Hi, name" 用户输入他们的名字。 但是,就像现在一样,直到之后我才输入我的名字。这使问题变得多余,因为问题在他们回答之后才会呈现给用户。

我知道这可能是一个愚蠢的问题,但我一直在谷歌搜索它没有成功。谢谢你的时间。

1 个答案:

答案 0 :(得分:5)

这可能是由于系统上的默认缓冲造成的。尝试使用hSetBuffering明确将缓冲模式设置为行缓冲:

main = do
    hSetBuffering stdout LineBuffering
    hSetBuffering stdin LineBuffering
    putStrLn "Hi, what's your name?"  
    name <- getLine  
    putStrLn ("Hi " ++ name)