packages feed

control-monad-failure 0.2 → 0.3

raw patch · 4 files changed

+96/−79 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- 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.Class: StringException :: String -> StringException
+ Control.Monad.Failure.Class: failureString :: (MonadFailure StringException m) => String -> m a
+ Control.Monad.Failure.Class: instance Exception StringException
+ Control.Monad.Failure.Class: instance Show StringException
+ Control.Monad.Failure.Class: instance Typeable StringException
+ Control.Monad.Failure.Class: newtype StringException
+ 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)

Files

Control/Monad/Failure/Class.hs view
@@ -1,9 +1,12 @@ {-# 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@@ -24,3 +27,13 @@  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
@@ -0,0 +1,76 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE FlexibleInstances #-}++module Control.Monad.Failure.MTL (module Control.Monad.Failure.Class) where++import Control.Monad.Failure.Class++import Control.Monad.Error+import Control.Monad.List+import Control.Monad.Reader+import Control.Monad.State.Lazy     as Lazy+import Control.Monad.State.Strict   as Strict+import Control.Monad.Writer.Lazy    as Lazy+import Control.Monad.Writer.Strict  as Strict+import Control.Monad.RWS.Lazy       as Lazy+import Control.Monad.RWS.Strict     as Strict+import Data.Monoid++-- -----------------------+-- MonadFailure Instances+-- -----------------------++instance (Error e, Monad m) => MonadFailure e (ErrorT e m) where+  failure = throwError++instance MonadFailure e m => MonadFailure e (ListT m) where+  failure = lift . failure++instance MonadFailure e m => MonadFailure e (ReaderT r m) where+  failure = lift . failure++instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.WriterT w  m) where+  failure = lift . failure++instance MonadFailure e m => MonadFailure e (Lazy.StateT s m) where+  failure = lift . failure++instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.RWST r w s m) where+  failure = lift . failure++instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.WriterT w  m) where+  failure = lift . failure++instance MonadFailure e m => MonadFailure e (Strict.StateT s m) where+  failure = lift . failure++instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.RWST r w s m) where+  failure = lift . failure++-- ---------------------+-- WrapFailure instances+-- ---------------------++instance WrapFailure e m => WrapFailure e (ListT m) where+  wrapFailure f = ListT . wrapFailure f . runListT++instance WrapFailure e 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+  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+  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+  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+  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+  wrapFailure f m = Strict.RWST $ \r s -> wrapFailure f (Strict.runRWST m r s)
− Control/Monad/Failure/Mtl.hs
@@ -1,76 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE FlexibleInstances #-}--module Control.Monad.Failure.Mtl (module Control.Monad.Failure.Class) where--import Control.Monad.Failure.Class--import Control.Monad.Error-import Control.Monad.List-import Control.Monad.Reader-import Control.Monad.State.Lazy     as Lazy-import Control.Monad.State.Strict   as Strict-import Control.Monad.Writer.Lazy    as Lazy-import Control.Monad.Writer.Strict  as Strict-import Control.Monad.RWS.Lazy       as Lazy-import Control.Monad.RWS.Strict     as Strict-import Data.Monoid---- -------------------------- MonadFailure Instances--- -------------------------instance (Error e, Monad m) => MonadFailure e (ErrorT e m) where-  failure = throwError--instance MonadFailure e m => MonadFailure e (ListT m) where-  failure = lift . failure--instance MonadFailure e m => MonadFailure e (ReaderT r m) where-  failure = lift . failure--instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.WriterT w  m) where-  failure = lift . failure--instance MonadFailure e m => MonadFailure e (Lazy.StateT s m) where-  failure = lift . failure--instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.RWST r w s m) where-  failure = lift . failure--instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.WriterT w  m) where-  failure = lift . failure--instance MonadFailure e m => MonadFailure e (Strict.StateT s m) where-  failure = lift . failure--instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.RWST r w s m) where-  failure = lift . failure---- ------------------------ WrapFailure instances--- -----------------------instance WrapFailure e m => WrapFailure e (ListT m) where-  wrapFailure f = ListT . wrapFailure f . runListT--instance WrapFailure e 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-  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-  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-  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-  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-  wrapFailure f m = Strict.RWST $ \r s -> wrapFailure f (Strict.runRWST m r s)
control-monad-failure.cabal view
@@ -1,6 +1,6 @@ name: control-monad-failure-version: 0.2-Cabal-Version:  >= 1.2.3+version: 0.3+Cabal-Version:  >= 1.6 build-type: Simple license: PublicDomain author: Pepe Iborra, Michael Snoyman, Nicolas Pouillard@@ -26,4 +26,8 @@   if flag(mtl)     cpp-options: -DMTL     build-depends: mtl-    exposed-modules: Control.Monad.Failure.Mtl+    exposed-modules: Control.Monad.Failure.MTL++source-repository head+  type:     git+  location: git://github.com/pepeiborra/control-monad-failure.git