On Fri, 13 Aug 2004 15:32:51 -0700, Lyle Kopnicky <[EMAIL PROTECTED]> wrote:
> Simon,
> 
> That makes good sense, as it's hard to read code that contains standard
> terms used in a nonstandard way.  I was just concerned that the function
> name I wanted to use was already in the Prelude!  Perhaps the Prelude
> 'catch', I reasoned, could be called 'catchIO', since it is specific to
> the IO monad, allowing people to write their own 'catch'.  Or 'catch'
> could be a member of a type class, which could be overloaded for any new
> monad.

If you don't mind non-haskell98 code, you could always use the
MonadError class in Control.Monad.Error:

class Monad m => MonadError m e | m -> e where
  throwError :: e -> m a
  catchError :: m a -> (e -> m a) -> m a


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

Reply via email to