Marcin writes:

| The Haskell 98 Report says that fail in instance Monad IO invokes error.
| The Library Report says that fail in instance Monad IO raises a user
error.
| 
| I would let it raise a user error, to be able to use fail in exception
| monads where strings suffice as the error type.

He's right.  The instance declaration in the Prelude (p101) should say
        
        instance Monad IO where
                ...
                fail s = ioError (userError s)

This was always intended (see Library report p55, 11.1).

Other clarifications should be
        * Index the reference to userError in Sec 7.3 of the Report
          and give a type signature for userError

        * In that same section, specify that fail s = ioError (userError s)

I'll do these as part of the (long-postponed) H98 report revision.

Any objections?  I don't think this is controversial.  Implementors take
note,
though.

Simon

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to