nobsun #6404(2008/06/01 23:33 GMT) [ Haskell ] Rating0/0=0.00
ghc-6.8.2 の System.Timeout を使ってみた 標準入出力をNoBufferingモードで使う ユーザキー入力はechoしないようにする Windowsで動くかどうかは未確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
module Main where import System.IO import System.Posix import System.Timeout main :: IO () main = do { hSetBuffering stdin NoBuffering ; hSetBuffering stdout NoBuffering ; at <- getTerminalAttributes stdInput ; setTerminalAttributes stdInput (withoutMode at EnableEcho) Immediately ; loop False } loop :: Bool -> IO () loop False = do { ; mc <- timeout (10^6) (hGetChar stdin) ; case mc of Nothing -> hPutChar stdout 'a' >> loop False Just 'p' -> loop True Just 'q' -> return () Just _ -> loop False } loop True = do { ; c <- hGetChar stdin ; case c of 'p' -> loop False 'q' -> return () _ -> loop True }
Rating0/0=0.00-0+
[ reply ]
nobsun
#6404()
[
Haskell
]
Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]