The following program has different semantics in ghc and ghci. main = do putStrLn "something" putStr "something else" It's the linebuffering. NoLineBuffering should be used on expressions without side-effects. So 5*5 should print immediately, and do putStrLn "something" should behave the same in both applications. How doesn't matter that much to me, but they should be the same.