I am VERY new to Haskell, and just getting my feet wet with functional programming in general. I've been going over a few examples online, but I can't figure out the behavior I'm seeing on a very basic example: --- module Main where import System.IO main :: IO () main = do putStrLn "Please enter your name: " name <- getLine putStrLn ("Hello, " ++ name ++ ", how are you?") --- This example works as I would expect. The prompt displays with a new line, the input is entered and echoed: --- Please enter your name: joe Hello, joe, how are you? However, changing 'putStrLn' to 'putStr' does not do what I would expect. The prompt doesn't get displayed until after there is input: --- joe Please enter your name: Hello, joe, how are you? Why does it exhibit this behavior? I'm using a ghc 6.6 built from source from 20070227. The regular 6.6 release had the same behavior. Any help would be greatly appreciated. -Joe -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/