8
我有一個很奇怪的問題。下面的代碼給出了不同的結果時相比,在ghci中運行編譯,GHCi和編譯好的代碼似乎行爲不一樣
main = do
putStr "Please enter your name: "
name <- getLine
putStr ("Hello, " ++ name ++ ", how are you?")
當ghci中它爲人們所期望的運行它,
Please enter your name: dglmoore
Hello, dglmoore, how are you?
然而,當我的代碼編譯成可執行程序,它要求我公司提供的輸入產生任何輸出之前,所以我結束了這一點,
dglmoore
Please enter your name: Hello, dglmoore, how are you?
我以前見過類似的問題,但我似乎無法再找到它。
我使用Haskell平臺版本2012.2.0.0中的ghc版本7.4.1。
任何人都有任何想法,他們爲什麼會給出不同的結果,我怎麼能讓兩個版本做「正確」的事情?
哇,我一直在使用Haskell兩年的更好的一部分,從來沒有遇到過這個問題。這就像一個魅力。 – 2012-08-12 22:46:34
@DougMoore請注意,在大多數編程語言中,終端輸出是行緩衝的 - 不僅僅是Haskell(儘管在某些語言中,讀取輸入會自動導致輸出被刷新,消除了這個錯誤源)。 – sepp2k 2012-08-12 22:48:42