我是Haskell的新手,我无法弄清楚如何在代码执行期间接受用户的输入。假设我输入以下代码:
import System.IO
main = do
putStrLn "Hi, what's your name?"
name <- getLine
putStrLn ("Hi " ++ name)
好吧,我希望文字"Hi, what's your name?"
显示之前我输入我的名字,然后在之后打印第二行"Hi, name"
用户输入他们的名字。
但是,就像现在一样,直到之后我才输入我的名字。这使问题变得多余,因为问题在他们回答之后才会呈现给用户。
我知道这可能是一个愚蠢的问题,但我一直在谷歌搜索它没有成功。谢谢你的时间。
答案 0 :(得分:5)
这可能是由于系统上的默认缓冲造成的。尝试使用hSetBuffering明确将缓冲模式设置为行缓冲:
main = do
hSetBuffering stdout LineBuffering
hSetBuffering stdin LineBuffering
putStrLn "Hi, what's your name?"
name <- getLine
putStrLn ("Hi " ++ name)