[Haskell-cafe] Equivalent of if/then/else for IO Bool?

Udo Stenzel u.stenzel at web.de
Thu Nov 23 18:57:00 EST 2006

Dougal Stanton wrote:
> Is there some sort of equivalent of the if/then/else construct for use
> in the IO monad? For instance the following can get quite tedious:
> > do bool <- doesFileExist filename
> >    if bool
> >    then sth
> >    else sth'
> Is there a more compact way of writing that? Something akin to:
> > condM (doesFileExist filename) (sth) (sth')

I'd suggest

  cond t f True  = t
  cond t f False = f

and then you use it like

  doesFileExist filename >>= cond sth sth'

I find it strange that we have 'maybe' for 'Maybe', 'either' for
'Either', 'foldr' for '[]', but a special syntactic form for 'Bool'.
Why is there no 'cond' in the Prelude?

There is no snooze button on a cat who wants breakfast.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20061124/62f6547d/attachment.bin

More information about the Haskell-Cafe mailing list