[Haskell-beginners] Strange difference in behaviour between ghc and ghci

Matthew Moppett matthewmoppett at gmail.com
Thu Jun 7 13:22:23 CEST 2012

I have a very simple Haskell file (HelloWorld.hs) that reads like this:

main = do
    putStr "What's your name? "
    n <- getLine
    putStrLn $ "Pleased to meet you, " ++ n

When I load it into ghci, I get the following result, as expected:

[1 of 1] Compiling Main             ( HelloWorld.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
What's your name? Matt
Pleased to meet you, Matt

However, when I compile the same file using ghc and run it in a terminal, I
get a very different result:

matt at matt-Lenovo-G575:~/Haskell$ ghc HelloWorld.hs
[1 of 1] Compiling Main             ( HelloWorld.hs, HelloWorld.o )
Linking HelloWorld ...
matt at matt-Lenovo-G575:~/Haskell$ ./HelloWorld
What's your name? Pleased to meet you, Matt
matt at matt-Lenovo-G575:~/Haskell$

-- in other words, the getLine action is being run before the putStr
action, for some strange reason.

Is this a bug? Can anyone enlighten me as to what might be going on?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20120607/90f03058/attachment.htm>

More information about the Beginners mailing list