The behaviour is fine: right after entering a character, I get echo back. However, when started with runhaskell (or compiled ./getchar): motiejus@precise> runhaskell getchar.hs la<CR> Entered: l Entered: a Entered: