[Haskell] How to read one char from stdin and return immediately?
robdockins at fastmail.fm
Fri Aug 18 09:36:58 EDT 2006
On Aug 18, 2006, at 8:09 AM, Haihua Lin wrote:
> Hi all,
> How to read one char from stdin and return immediately?
> I mean there is no need to wait the user input a return.
> For example:
> Print "y/n: "
> Users input y, return immediately, no return need.
> I have tried code as below, but it didn't work for me.
> import IO
> main = do
> hSetBuffering stdout NoBuffering
> putStr "Y/N: "
> c <- getChar
> putStr ("Your input is " ++ show c++".\n")
> Thanks very much.
I do it this way; it should keep your buffering state consistent even
if exceptions occur.
bracket (hGetBuffering stdin) (hSetBuffering stdin) $ \_ -> do
hSetBuffering stdin NoBuffering
c <- hGetChar stdin
> Best regards,
> Haihua Lin
Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
More information about the Haskell