我在Ubuntu上。当我ghci
在终端上运行并执行以下操作时:
Prelude Control.Monad System.IO> forever $ getChar >>= print
结果是这样的:
a'a' b'b' C'C' %'%' \'\\' 1'1' ''\'' "'"' ^X'\CAN' ^?'\DEL' ^CInterrupted.
也就是说,我在键盘上输入的字符将被刷新到输出中。我怎样才能避免这种情况,只能print
以作家的身份出现?
为防止输入刷新到输出中(或“回显”),请使用hSetEcho stdin False
。
Prelude> import System.IO Prelude System.IO> import Control.Monad Prelude System.IO Control.Monad> hSetEcho stdin False Prelude System.IO Control.Monad> forever $ getChar >>= print 'a' '\n' 'b' 'c'
这可以用来做类似读密码的事情。