diff options
| -rw-r--r-- | src/Propellor/Exception.hs | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/src/Propellor/Exception.hs b/src/Propellor/Exception.hs index c02fa61a..3ab783bf 100644 --- a/src/Propellor/Exception.hs +++ b/src/Propellor/Exception.hs @@ -10,15 +10,10 @@ import Utility.Exception import Control.Exception (AsyncException) import Control.Monad.Catch import Control.Monad.IO.Class (MonadIO) -import Control.Applicative -import Prelude -- | Catches all exceptions (except for `StopPropellorException` and -- `AsyncException`) and returns FailedChange. -catchPropellor - :: (Applicative m, MonadIO m, MonadCatch m) - => m Result - -> m Result +catchPropellor :: (MonadIO m, MonadCatch m) => m Result -> m Result catchPropellor a = either err return =<< tryPropellor a where err e = warningMessage (show e) >> return FailedChange @@ -32,8 +27,5 @@ catchPropellor' a onerr = a `catches` -- | Catches all exceptions (except for `StopPropellorException` and -- `AsyncException`). -tryPropellor - :: (Functor m, Applicative m, MonadCatch m) - => m a - -> m (Either SomeException a) +tryPropellor :: MonadCatch m => m a -> m (Either SomeException a) tryPropellor a = (Right <$> a) `catchPropellor'` (pure . Left) |
