Hi, For GHC (6.0.1) "main=interact id" basically echoes every line of my input, whereas "main=interact show" correctly waits for EOF before outputting something. Furthermore the buffering mode must be "LineBuffering". If I explicitely set the buffering to "NoBuffering" I'm not able to enter EOF by typing "ctrl-d". Furthermore my terminal seems to remain in the buffering mode set by the previously called ghc-haskell program (because it effects programs that do not "hSetBuffering".) With "runhugs" (Nov 2002) there is no premature output for "interact id", the buffering mode does not matter, but "ctrl-d" is not recognized as EOF. NHC98 does not even wait for a line break before outputting the result (and echoes "\EOT" for "ctrl-d"). What should a student think about "interact" in the Prelude? (It's ok for pipes only, I guess.) Christian module Main where import System.IO main = do hSetBuffering stdin NoBuffering interact id -- maeder@turing:~/haskell/examples> bash --version GNU bash, version 2.05b.0(1)-release (i586-suse-linux) Copyright (C) 2002 Free Software Foundation, Inc. maeder@turing:~/haskell/examples> ghc --version The Glorious Glasgow Haskell Compilation System, version 6.0.1 maeder@turing:~/haskell/examples> ghc --make Interact.hs -o interact Chasing modules from: Interact.hs Compiling Main ( Interact.hs, ./Interact.o ) Linking ... maeder@turing:~/haskell/examples> ./interact 1 1 2 2 3 3 ^D^D^D ccc interact: interrupted