Eager IO function

Malcolm Wallace Malcolm.Wallace@cs.york.ac.uk
Wed, 13 Feb 2002 10:08:21 +0000


> How should I modify the function below so that characters are printed
> out as they arrive?
> 
> printchar :: Handle -> IO ()
> printchar handle = do   c <- hGetChar handle
>                         putChar c

Try using
    hSetBuffering handle NoBuffering
    hSetBuffering stdout NoBuffering
from the IO library, before you call printchar.  If the input handle
is attached to a terminal, you may also need to adjust the terminal
emulation into `cbreak' mode, e.g. with
    System.system "stty cbreak"
Don't forget to reset the terminal afterwards!

Regards,
    Malcolm