| Here's an even better idea: replace mfail with fail.
| It is, after all, the fail of the IO monad!
| 
|   Option 4'': Monad ((>>=), return, fail)

Unfortunately not, fail of IO fame has type
        IOError -> IO a
and not
        String -> m a
as Monad's new member.

Here's my suggestion:
o  Monad ((>>=), return, fail)
o  throw (thanks Frank) instead of fail for the IO operation
o  raise for Haskell-2's exception mechanism (raise and handle)?

Cheers, Ralf



Reply via email to