[Hat] Pattern match errors in do?

Olaf Chitil O.Chitil at kent.ac.uk
Thu Jul 6 05:40:33 EDT 2006


Neil Mitchell wrote:

> Hi,
>
>> A pattern match failure in a "do" will call "fail" (not "error" as other
>> pattern match failures do). This is the "fail" of the IO monad, which
>> calls "ioError".
>
>
> I believe according to Haskell 98, fail in the IO monad calls error -
> its only recent extension to GHC/Hugs which have resulted in ioError
> and exceptions. Perhaps for the purposes of hat stuff, error should be
> called instead? At least until a proper exception story can be
> developed.

 From the Haskell 98 report:

The fail method of the IO instance of the Monad class (Section 6.3.6 
<http://haskell.org/onlinereport/basic.html#monad-class>) raises a 
userError, thus:

  instance Monad IO where 
    ...bindings for return, (>>=), (>>)

    fail s = ioError (userError s)

Also other IO operations (e.g. file not found) will directly raise an 
exception.

Ciao,
Olaf



More information about the Hat mailing list