Proposal: Extensible exceptions

Judah Jacobson judah.jacobson at
Fri Jul 4 14:12:16 EDT 2008

On Fri, Jul 4, 2008 at 10:52 AM, Chris Kuklewicz
<haskell at> wrote:
> Ian Lynagh wrote:
>> The old and new types for catch are:
>>    Old: catch ::                IO a -> (Exception -> IO a) -> IO a
>>    New: catch :: Exception e => IO a -> (e         -> IO a) -> IO a
>> i.e. catch can now catch any type of exception; we don't have to force
>> all the different types of extension into one fixed datatype.
> Is there any sane way to allow extending or building equivalents to these
> for MonadIO?

MonadIO currently isn't enough to implement catch.  There's been
discussion of this in the past, though; for an example solution, see
the following module from the haskell-prime wiki:

I had been thinking of proposing that a Control.Monad.Exception module
be added to the mtl package, but any discussion on this subject should
probably wait until the extensible exceptions API is nailed down.


More information about the Libraries mailing list