GHCi and compiled code seem to behave differently

Viewed 347

I have a very strange problem. The following code gives different results when compiled as compared to running in ghci,

main = do
  putStr "Please enter your name: "
  name <- getLine
  putStr ("Hello, " ++ name ++ ", how are you?")

When run it in ghci it does as one would expect,

Please enter your name: dglmoore
Hello, dglmoore, how are you?

However, when I compile the code to an executable it requires that I provide the input before any output is generated so I end up with this,

dglmoore
Please enter your name: Hello, dglmoore, how are you?

I've seen a similar problem before, but I cannot seem to find it again.

I am using ghc version 7.4.1 from the Haskell Platform version 2012.2.0.0.

Anyone have any idea why they give different results and how I can get both versions to do the "correct" thing?

1 Answers
Related