-- ------------------------------------------------------------ {- | Module : Control.Arrow.ArrowExc Copyright : Copyright (C) 2010 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe\@fh-wedel.de) Stability : experimental Portability: not portable The exception arrow class -} -- ------------------------------------------------------------ module Control.Arrow.ArrowExc ( ArrowExc(..) ) where import Control.Arrow import Control.Arrow.ArrowIO import Control.Exception ( SomeException ) class (Arrow a, ArrowChoice a, ArrowZero a, ArrowIO a) => ArrowExc a where tryA :: a b c -> a b (Either SomeException c) catchA :: a b c -> a SomeException c -> a b c catchA f h = tryA f >>> ( h ||| returnA ) -- ------------------------------------------------------------