control-monad-failure-mtl 0.5.0 → 0.6.0
raw patch · 6 files changed
+33/−68 lines, 6 filesdep +failuredep ~mtlsetup-changednew-uploaderPVP ok
version bump matches the API change (PVP)
Dependencies added: failure
Dependency ranges changed: mtl
API changes (from Hackage documentation)
- Control.Monad.Failure.Class: StringException :: String -> StringException
- Control.Monad.Failure.Class: class (Monad m) => MonadFailure e m
- Control.Monad.Failure.Class: class (MonadFailure e m) => WrapFailure e m
- Control.Monad.Failure.Class: failure :: (MonadFailure e m) => e -> m a
- Control.Monad.Failure.Class: failureString :: (MonadFailure StringException m) => String -> m a
- Control.Monad.Failure.Class: instance (Exception e) => MonadFailure e IO
- Control.Monad.Failure.Class: instance Exception StringException
- Control.Monad.Failure.Class: instance MonadFailure e Maybe
- Control.Monad.Failure.Class: instance MonadFailure e []
- Control.Monad.Failure.Class: instance Show StringException
- Control.Monad.Failure.Class: instance Typeable StringException
- Control.Monad.Failure.Class: newtype StringException
- Control.Monad.Failure.Class: wrapFailure :: (WrapFailure e m) => (forall eIn. (Exception eIn) => eIn -> e) -> m a -> m a
- Control.Monad.Failure.MTL: instance (Error e) => MonadFailure e (Either e)
- Control.Monad.Failure.MTL: instance (Error e, Monad m) => MonadFailure e (ErrorT e m)
- Control.Monad.Failure.MTL: instance (MonadFailure e m) => MonadFailure e (ListT m)
- Control.Monad.Failure.MTL: instance (MonadFailure e m) => MonadFailure e (ReaderT r m)
- Control.Monad.Failure.MTL: instance (MonadFailure e m) => MonadFailure e (StateT s m)
- Control.Monad.Failure.MTL: instance (Monoid w, MonadFailure e m) => MonadFailure e (RWST r w s m)
- Control.Monad.Failure.MTL: instance (Monoid w, MonadFailure e m) => MonadFailure e (WriterT w m)
- Control.Monad.Failure.MTL: instance (WrapFailure e m) => WrapFailure e (ListT m)
- Control.Monad.Failure.MTL: instance (WrapFailure e m) => WrapFailure e (ReaderT r m)
- Control.Monad.Failure.MTL: instance (WrapFailure e m) => WrapFailure e (StateT s m)
- Control.Monad.Failure.MTL: instance (WrapFailure e m, Monoid w) => WrapFailure e (RWST r w s m)
- Control.Monad.Failure.MTL: instance (WrapFailure e m, Monoid w) => WrapFailure e (WriterT w m)
+ Control.Monad.Failure.MTL: instance (Error e, Monad m) => Failure e (ErrorT e m)
+ Control.Monad.Failure.MTL: instance (Monad m, Failure e m) => Failure e (ListT m)
+ Control.Monad.Failure.MTL: instance (Monad m, Failure e m) => Failure e (ReaderT r m)
+ Control.Monad.Failure.MTL: instance (Monad m, Failure e m) => Failure e (StateT s m)
+ Control.Monad.Failure.MTL: instance (Monoid w, Monad m, Failure e m) => Failure e (RWST r w s m)
+ Control.Monad.Failure.MTL: instance (Monoid w, Monad m, Failure e m) => Failure e (WriterT w m)
+ Control.Monad.Failure.MTL: instance (WrapFailure e m, Monad m) => WrapFailure e (ListT m)
+ Control.Monad.Failure.MTL: instance (WrapFailure e m, Monad m) => WrapFailure e (ReaderT r m)
+ Control.Monad.Failure.MTL: instance (WrapFailure e m, Monad m) => WrapFailure e (StateT s m)
+ Control.Monad.Failure.MTL: instance (WrapFailure e m, Monoid w, Monad m) => WrapFailure e (RWST r w s m)
+ Control.Monad.Failure.MTL: instance (WrapFailure e m, Monoid w, Monad m) => WrapFailure e (WriterT w m)
Files
- Control/Monad/Failure.hs +3/−2
- Control/Monad/Failure/Class.hs +0/−39
- Control/Monad/Failure/MTL.hs +18/−21
- Setup.hs +0/−2
- Setup.lhs +7/−0
- control-monad-failure-mtl.cabal +5/−4
Control/Monad/Failure.hs view
@@ -1,3 +1,4 @@-module Control.Monad.Failure (module Control.Monad.Failure.Class) where+module Control.Monad.Failure (module Control.Failure) where -import Control.Monad.Failure.Class+import Control.Failure+
− Control/Monad/Failure/Class.hs
@@ -1,39 +0,0 @@-{-# LANGUAGE Rank2Types #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE FlexibleContexts #-}-{-| Defines the class @MonadFailure@ for monads which can fail.--}-module Control.Monad.Failure.Class where--import Control.Exception (throw, Exception)-import Data.Typeable--class Monad m => MonadFailure e m where- failure :: e -> m a--class MonadFailure e m => WrapFailure e m where- -- | Wrap the failure value, if any, with the given function. This is- -- useful in particular when you want all the exceptions returned from a- -- certain library to be of a certain type, even if they were generated by- -- a different library.- wrapFailure :: (forall eIn. Exception eIn => eIn -> e) -> m a -> m a---- ----------------- base instances--- ----------------instance MonadFailure e Maybe where failure _ = Nothing-instance MonadFailure e [] where failure _ = []--instance Exception e => MonadFailure e IO where- failure = Control.Exception.throw---- | Call 'failure' with a 'String'.-failureString :: MonadFailure StringException m => String -> m a-failureString = failure . StringException--newtype StringException = StringException String- deriving Typeable-instance Show StringException where- show (StringException s) = "StringException: " ++ s-instance Exception StringException
Control/Monad/Failure/MTL.hs view
@@ -3,9 +3,9 @@ {-# LANGUAGE FlexibleInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -module Control.Monad.Failure.MTL (module Control.Monad.Failure.Class) where+module Control.Monad.Failure.MTL (module Control.Failure) where -import Control.Monad.Failure.Class+import Control.Failure hiding (Error) import Control.Monad.Error import Control.Monad.List@@ -22,59 +22,56 @@ -- MonadFailure Instances -- ----------------------- -instance (Error e) => MonadFailure e (Either e) where- failure = Left--instance (Error e, Monad m) => MonadFailure e (ErrorT e m) where+instance (Error e, Monad m) => Failure e (ErrorT e m) where failure = throwError -instance MonadFailure e m => MonadFailure e (ListT m) where+instance (Monad m, Failure e m) => Failure e (ListT m) where failure = lift . failure -instance MonadFailure e m => MonadFailure e (ReaderT r m) where+instance (Monad m, Failure e m) => Failure e (ReaderT r m) where failure = lift . failure -instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.WriterT w m) where+instance (Monoid w, Monad m, Failure e m) => Failure e (Lazy.WriterT w m) where failure = lift . failure -instance MonadFailure e m => MonadFailure e (Lazy.StateT s m) where+instance (Monad m, Failure e m) => Failure e (Lazy.StateT s m) where failure = lift . failure -instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.RWST r w s m) where+instance (Monoid w, Monad m, Failure e m) => Failure e (Lazy.RWST r w s m) where failure = lift . failure -instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.WriterT w m) where+instance (Monoid w, Monad m, Failure e m) => Failure e (Strict.WriterT w m) where failure = lift . failure -instance MonadFailure e m => MonadFailure e (Strict.StateT s m) where+instance (Monad m, Failure e m) => Failure e (Strict.StateT s m) where failure = lift . failure -instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.RWST r w s m) where+instance (Monoid w, Monad m, Failure e m) => Failure e (Strict.RWST r w s m) where failure = lift . failure -- --------------------- -- WrapFailure instances -- --------------------- -instance WrapFailure e m => WrapFailure e (ListT m) where+instance (WrapFailure e m, Monad m) => WrapFailure e (ListT m) where wrapFailure f = ListT . wrapFailure f . runListT -instance WrapFailure e m => WrapFailure e (ReaderT r m) where+instance (WrapFailure e m, Monad m) => WrapFailure e (ReaderT r m) where wrapFailure f m = ReaderT $ \r -> wrapFailure f (runReaderT m r) -instance (WrapFailure e m, Monoid w) => WrapFailure e (Lazy.WriterT w m) where+instance (WrapFailure e m, Monoid w, Monad m) => WrapFailure e (Lazy.WriterT w m) where wrapFailure f = Lazy.WriterT . wrapFailure f . Lazy.runWriterT -- all the following instances require undecidable instances-instance WrapFailure e m => WrapFailure e (Lazy.StateT s m) where+instance (WrapFailure e m, Monad m) => WrapFailure e (Lazy.StateT s m) where wrapFailure f m = Lazy.StateT $ \s -> wrapFailure f (Lazy.runStateT m s) -instance (WrapFailure e m, Monoid w) => WrapFailure e (Lazy.RWST r w s m) where+instance (WrapFailure e m, Monoid w, Monad m) => WrapFailure e (Lazy.RWST r w s m) where wrapFailure f m = Lazy.RWST $ \r s -> wrapFailure f (Lazy.runRWST m r s) -instance WrapFailure e m => WrapFailure e (Strict.StateT s m) where+instance (WrapFailure e m, Monad m) => WrapFailure e (Strict.StateT s m) where wrapFailure f m = Strict.StateT $ \s -> wrapFailure f (Strict.runStateT m s) -instance (WrapFailure e m, Monoid w) => WrapFailure e (Strict.RWST r w s m) where+instance (WrapFailure e m, Monoid w, Monad m) => WrapFailure e (Strict.RWST r w s m) where wrapFailure f m = Strict.RWST $ \r s -> wrapFailure f (Strict.runRWST m r s)
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
+ Setup.lhs view
@@ -0,0 +1,7 @@+#!/usr/bin/env runhaskell++> module Main where+> import Distribution.Simple++> main :: IO ()+> main = defaultMain
control-monad-failure-mtl.cabal view
@@ -1,5 +1,5 @@ name: control-monad-failure-mtl-version: 0.5.0+version: 0.6.0 Cabal-Version: >= 1.6 build-type: Simple license: PublicDomain@@ -8,17 +8,18 @@ homepage: http://github.com/pepeiborra/control-monad-failure description: A class for monads which can fail with an error. synopsis: A class for monads which can fail with an error.-category: Control, Monads+category: Control, Monads, Failure stability: experimental Library buildable: True- build-depends: base >= 4 && < 5, mtl+ build-depends: base >= 4 && < 5,+ failure >= 0.0.0 && < 0.1,+ mtl >= 1.1.0.2 && < 1.2 ghc-options: -Wall extensions: MultiParamTypeClasses, FlexibleInstances exposed-modules: Control.Monad.Failure- Control.Monad.Failure.Class Control.Monad.Failure.MTL source-repository head