monads-tf 0.0.0.0 → 0.0.0.1
raw patch · 8 files changed
+78/−6 lines, 8 filesdep ~transformersPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: transformers
API changes (from Hackage documentation)
+ Control.Monad.Cont.Class: instance (MonadCont m) => MonadCont (IdentityT m)
+ Control.Monad.Cont.Class: instance (MonadCont m) => MonadCont (MaybeT m)
+ Control.Monad.Error.Class: instance (MonadError m) => MonadError (IdentityT m)
+ Control.Monad.Error.Class: instance (MonadError m) => MonadError (MaybeT m)
+ Control.Monad.Error.Class: noMsg :: (Error a) => a
+ Control.Monad.Error.Class: strMsg :: (Error a) => String -> a
+ Control.Monad.RWS.Class: instance (MonadRWS m) => MonadRWS (IdentityT m)
+ Control.Monad.RWS.Class: instance (MonadRWS m) => MonadRWS (MaybeT m)
+ Control.Monad.Reader: ask :: (MonadReader m) => m (EnvType m)
+ Control.Monad.Reader: asks :: (MonadReader m) => (EnvType m -> a) -> m a
+ Control.Monad.Reader: class (Monad m) => MonadReader m where { type family EnvType m; }
+ Control.Monad.Reader: local :: (MonadReader m) => (EnvType m -> EnvType m) -> m a -> m a
+ Control.Monad.Reader: runReader :: Reader r a -> r -> a
+ Control.Monad.Reader.Class: instance (MonadReader m) => MonadReader (IdentityT m)
+ Control.Monad.Reader.Class: instance (MonadReader m) => MonadReader (MaybeT m)
+ Control.Monad.State.Class: instance (MonadState m) => MonadState (IdentityT m)
+ Control.Monad.State.Class: instance (MonadState m) => MonadState (MaybeT m)
+ Control.Monad.Writer.Class: instance (MonadWriter m) => MonadWriter (IdentityT m)
+ Control.Monad.Writer.Class: instance (MonadWriter m) => MonadWriter (MaybeT m)
Files
- Control/Monad/Cont/Class.hs +8/−0
- Control/Monad/Error/Class.hs +14/−2
- Control/Monad/RWS/Class.hs +7/−0
- Control/Monad/Reader.hs +9/−2
- Control/Monad/Reader/Class.hs +12/−0
- Control/Monad/State/Class.hs +12/−0
- Control/Monad/Writer/Class.hs +14/−0
- monads-tf.cabal +2/−2
Control/Monad/Cont/Class.hs view
@@ -55,7 +55,9 @@ import Control.Monad.Trans.Cont (ContT) import qualified Control.Monad.Trans.Cont as ContT import Control.Monad.Trans.Error as Error+import Control.Monad.Trans.Identity as Identity import Control.Monad.Trans.List as List+import Control.Monad.Trans.Maybe as Maybe import Control.Monad.Trans.Reader as Reader import Control.Monad.Trans.RWS.Lazy as LazyRWS import Control.Monad.Trans.RWS.Strict as StrictRWS@@ -97,8 +99,14 @@ instance (Error e, MonadCont m) => MonadCont (ErrorT e m) where callCC = Error.liftCallCC callCC +instance (MonadCont m) => MonadCont (IdentityT m) where+ callCC = Identity.liftCallCC callCC+ instance (MonadCont m) => MonadCont (ListT m) where callCC = List.liftCallCC callCC++instance (MonadCont m) => MonadCont (MaybeT m) where+ callCC = Maybe.liftCallCC callCC instance (MonadCont m) => MonadCont (ReaderT r m) where callCC = Reader.liftCallCC callCC
Control/Monad/Error/Class.hs view
@@ -32,13 +32,15 @@ Andy Gill (<http://web.cecs.pdx.edu/~andy/>) -} module Control.Monad.Error.Class (- Error,+ Error(..), MonadError(..), ) where -import Control.Monad.Trans.Error (Error, ErrorT)+import Control.Monad.Trans.Error (Error(..), ErrorT) import qualified Control.Monad.Trans.Error as ErrorT (throwError, catchError)+import Control.Monad.Trans.Identity as Identity import Control.Monad.Trans.List as List+import Control.Monad.Trans.Maybe as Maybe import Control.Monad.Trans.Reader as Reader import Control.Monad.Trans.RWS.Lazy as LazyRWS import Control.Monad.Trans.RWS.Strict as StrictRWS@@ -108,10 +110,20 @@ -- --------------------------------------------------------------------------- -- Instances for other mtl transformers +instance (MonadError m) => MonadError (IdentityT m) where+ type ErrorType (IdentityT m) = ErrorType m+ throwError = lift . throwError+ catchError = Identity.liftCatch catchError+ instance (MonadError m) => MonadError (ListT m) where type ErrorType (ListT m) = ErrorType m throwError = lift . throwError catchError = List.liftCatch catchError++instance (MonadError m) => MonadError (MaybeT m) where+ type ErrorType (MaybeT m) = ErrorType m+ throwError = lift . throwError+ catchError = Maybe.liftCatch catchError instance (MonadError m) => MonadError (ReaderT r m) where type ErrorType (ReaderT r m) = ErrorType m
Control/Monad/RWS/Class.hs view
@@ -1,4 +1,5 @@ +----------------------------------------------------------------------------- -- | -- Module : Control.Monad.RWS.Class -- Copyright : (c) Andy Gill 2001,@@ -30,6 +31,8 @@ import Control.Monad.Writer.Class import Control.Monad.Trans.Error(Error, ErrorT)+import Control.Monad.Trans.Maybe(MaybeT)+import Control.Monad.Trans.Identity(IdentityT) import Control.Monad.Trans.RWS.Lazy as Lazy (RWST) import qualified Control.Monad.Trans.RWS.Strict as Strict (RWST) @@ -46,3 +49,7 @@ -- Instances for other mtl transformers instance (Error e, MonadRWS m) => MonadRWS (ErrorT e m)+ +instance (MonadRWS m) => MonadRWS (IdentityT m)+ +instance (MonadRWS m) => MonadRWS (MaybeT m)
Control/Monad/Reader.hs view
@@ -37,10 +37,15 @@ -} module Control.Monad.Reader (- module Control.Monad.Reader.Class,+ -- * MonadReader class+ MonadReader(..),+ asks,+ -- * The Reader monad Reader,+ runReader, mapReader, withReader,+ -- * The ReaderT monad transformer ReaderT(..), mapReaderT, withReaderT,@@ -59,7 +64,9 @@ import Control.Monad.Reader.Class -import Control.Monad.Trans.Reader hiding (ask, local, asks)+import Control.Monad.Trans.Reader (+ Reader, runReader, mapReader, withReader,+ ReaderT(..), mapReaderT, withReaderT) import Control.Monad.Trans import Control.Monad
Control/Monad/Reader/Class.hs view
@@ -44,7 +44,9 @@ import Control.Monad.Trans.Cont as Cont import Control.Monad.Trans.Error+import Control.Monad.Trans.Identity import Control.Monad.Trans.List+import Control.Monad.Trans.Maybe import Control.Monad.Trans.Reader (ReaderT) import qualified Control.Monad.Trans.Reader as ReaderT (ask, local) import qualified Control.Monad.Trans.RWS.Lazy as LazyRWS (RWST, ask, local)@@ -121,10 +123,20 @@ ask = lift ask local = mapErrorT . local +instance (MonadReader m) => MonadReader (IdentityT m) where+ type EnvType (IdentityT m) = EnvType m+ ask = lift ask+ local = mapIdentityT . local+ instance (MonadReader m) => MonadReader (ListT m) where type EnvType (ListT m) = EnvType m ask = lift ask local = mapListT . local++instance (MonadReader m) => MonadReader (MaybeT m) where+ type EnvType (MaybeT m) = EnvType m+ ask = lift ask+ local = mapMaybeT . local instance (MonadReader m) => MonadReader (Lazy.StateT s m) where type EnvType (Lazy.StateT s m) = EnvType m
Control/Monad/State/Class.hs view
@@ -28,7 +28,9 @@ import Control.Monad.Trans (lift) import Control.Monad.Trans.Cont import Control.Monad.Trans.Error+import Control.Monad.Trans.Identity import Control.Monad.Trans.List+import Control.Monad.Trans.Maybe import Control.Monad.Trans.Reader import qualified Control.Monad.Trans.RWS.Lazy as LazyRWS (RWST, get, put) import qualified Control.Monad.Trans.RWS.Strict as StrictRWS (RWST, get, put)@@ -108,8 +110,18 @@ get = lift get put = lift . put +instance (MonadState m) => MonadState (IdentityT m) where+ type StateType (IdentityT m) = StateType m+ get = lift get+ put = lift . put+ instance (MonadState m) => MonadState (ListT m) where type StateType (ListT m) = StateType m+ get = lift get+ put = lift . put++instance (MonadState m) => MonadState (MaybeT m) where+ type StateType (MaybeT m) = StateType m get = lift get put = lift . put
Control/Monad/Writer/Class.hs view
@@ -26,6 +26,8 @@ import Control.Monad import Control.Monad.Trans.Error as Error+import Control.Monad.Trans.Identity as Identity+import Control.Monad.Trans.Maybe as Maybe import Control.Monad.Trans.Reader import qualified Control.Monad.Trans.RWS.Lazy as LazyRWS ( RWST, tell, listen, pass)@@ -100,6 +102,18 @@ tell = lift . tell listen = Error.liftListen listen pass = Error.liftPass pass++instance (MonadWriter m) => MonadWriter (IdentityT m) where+ type WriterType (IdentityT m) = WriterType m+ tell = lift . tell+ listen = Identity.mapIdentityT listen+ pass = Identity.mapIdentityT pass++instance (MonadWriter m) => MonadWriter (MaybeT m) where+ type WriterType (MaybeT m) = WriterType m+ tell = lift . tell+ listen = Maybe.liftListen listen+ pass = Maybe.liftPass pass instance (MonadWriter m) => MonadWriter (ReaderT r m) where type WriterType (ReaderT r m) = WriterType m
monads-tf.cabal view
@@ -1,5 +1,5 @@ name: monads-tf-version: 0.0.0.0+version: 0.0.0.1 license: BSD3 license-file: LICENSE cabal-version: >= 1.2.3@@ -37,7 +37,7 @@ Control.Monad.Writer.Class Control.Monad.Writer.Lazy Control.Monad.Writer.Strict-build-depends: base, transformers+build-depends: base, transformers >= 0.1.4.0 extensions: FlexibleContexts TypeFamilies