[Haskell-cafe] Disable echo in POSIX terminal

Derek Elkins derek.a.elkins at gmail.com
Fri Nov 9 16:37:20 EST 2007

On Fri, 2007-11-09 at 17:41 +0100, Alfonso Acosta wrote:
> I this there's no need for a binding
> How about this?
> import Control.Monad (when)
> import System.IO
> getpasswd :: Handle -> IO String
> getpasswd h = do wasEnabled <- hGetEcho h
>                                  when  wasEnabled (hSetEcho h False)
>                                  str <- hGetLine h
>                                  when wasEnabled (hSetEcho h True)
>                                  return str

Pointless frobbing but is there any issue with setting the echo to False
when it is already False?  Otherwise not checking seems to both simpler
and quicker (not that performance matters), i.e.
getpasswd h = do
    wasEnabled <- hGetEcho h
    hSetEcho h False
    str <- hGetLine h
    hSetEcho wasEnabled
    return str

More information about the Haskell-Cafe mailing list