On Thu, Mar 04, 2010 at 01:06:42PM -0500, Ali Razavi wrote:
> Why doesn't this work the way it's supposed to, or the way it's intuitively
> apparent from the code, that is, showing the prompt first, getting the line
> next, and printing the result finally?
>
> main = do
> putStr "Please Enter Your Name: "
> name <- getLine
> putStrLn ("Hello " ++ name)
>
>
> changing putStr with putStrLn rectifies it to the expected behavior, but I
> wonder why this version misbehaves. FWIW, I use ghc in cygwin.
>
> Ali
This is because of output buffering. By default, LineBuffering is