Proposal: Extensible exceptions

Isaac Dupree isaacdupree at
Tue Jul 8 06:09:14 EDT 2008

Ian Lynagh wrote:
> On Mon, Jul 07, 2008 at 01:51:11PM -0400, Isaac Dupree wrote:
>> I have type issues.  Look how inconsistent these types are (I think, 
>> copied from the patch); some use forall and some use SomeException:
>> catchAny :: IO a -> (forall e . Exception e => e -> IO a) -> IO a
>> setUncaughtExceptionHandler :: (SomeException -> IO ()) -> IO ()
>> getUncaughtExceptionHandler :: IO (SomeException -> IO ())
> setUncaughtExceptionHandler/getUncaughtExceptionHandler look like they
> are really part of GHC.TopHandler, which is really internal to GHC. That
> still needs to be sorted out properly.

hmm, they're not really supposed to be part of the Exception API?  Fine 
with me...

>> catchAny :: IO a -> (SomeException -> IO a) -> IO a
>> Then we don't even need the Rank2Types extension?
> I think that's an option, yes, but we do still need
> ExistentialQuantification, so I'm not sure how much it buys us.

well, IIRC nhc98/Yhc's current type system supports 
ExistentialQuantification but not Rank2Types, which is why I thought it 
worth mentioning


More information about the Libraries mailing list