
On Fri, Jul 4, 2008 at 10:52 AM, Chris Kuklewicz
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: http://hackage.haskell.org/trac/haskell-prime/attachment/ticket/110/Exceptio... 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. -Judah