
13 Feb
2002
13 Feb
'02
8:23 a.m.
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!
GHC does the "stty cbreak" step for you, if the handle on which you set the buffering mode is a terminal. Note also that not all systems have an 'stty' command. Cheers, Simon
8498
Age (days ago)
8498
Last active (days ago)
0 comments
1 participants
participants (1)
-
Simon Marlow