util-exception-0.1.0.0: Util/Exception.hs
{-# LANGUAGE ExistentialQuantification #-}
module Util.Exception where
import Control.Exception.Lifted
import Control.Monad
import Control.Monad.Trans.Control
import Data.Monoid (Alt (..))
import Util
handleJusts :: MonadBaseControl IO m => [ExceptionPredicate b] -> (b -> m a) -> m a -> m a
handleJusts = handleJust . fmap getAlt . foldMapA (fmap Alt . \ (ExceptionPredicate f) -> fromException >=> f)
data ExceptionPredicate b = ∀ e . Exception e => ExceptionPredicate (e -> Maybe b)