transformers 0.5.3.0 → 0.5.3.1
raw patch · 4 files changed
+17/−14 lines, 4 filesdep ~base
Dependency ranges changed: base
Files
- Control/Monad/Trans/Accum.hs +9/−9
- Control/Monad/Trans/Select.hs +4/−4
- changelog +3/−0
- transformers.cabal +1/−1
Control/Monad/Trans/Accum.hs view
@@ -167,8 +167,8 @@ fmap f = mapAccumT $ fmap $ \ ~(a, w) -> (f a, w) {-# INLINE fmap #-} -instance (Monoid w, Monad m) => Applicative (AccumT w m) where- pure a = AccumT $ const $ pure (a, mempty)+instance (Monoid w, Functor m, Monad m) => Applicative (AccumT w m) where+ pure a = AccumT $ const $ return (a, mempty) {-# INLINE pure #-} mf <*> mv = AccumT $ \ w -> do ~(f, w') <- runAccumT mf w@@ -176,15 +176,15 @@ return (f v, w' `mappend` w'') {-# INLINE (<*>) #-} -instance (Monoid w, MonadPlus m) => Alternative (AccumT w m) where+instance (Monoid w, Functor m, MonadPlus m) => Alternative (AccumT w m) where empty = AccumT $ const mzero {-# INLINE empty #-}- m <|> n = AccumT $ \ w -> runAccumT m w <|> runAccumT n w+ m <|> n = AccumT $ \ w -> runAccumT m w `mplus` runAccumT n w {-# INLINE (<|>) #-} -instance (Monoid w, Monad m) => Monad (AccumT w m) where+instance (Monoid w, Functor m, Monad m) => Monad (AccumT w m) where #if !(MIN_VERSION_base(4,8,0))- return a = AccumT $ const $ return (a, mempty)+ return a = AccumT $ const $ return (a, mempty) {-# INLINE return #-} #endif m >>= k = AccumT $ \ w -> do@@ -201,13 +201,13 @@ {-# INLINE fail #-} #endif -instance (Monoid w, MonadPlus m) => MonadPlus (AccumT w m) where+instance (Monoid w, Functor m, MonadPlus m) => MonadPlus (AccumT w m) where mzero = AccumT $ const mzero {-# INLINE mzero #-} m `mplus` n = AccumT $ \ w -> runAccumT m w `mplus` runAccumT n w {-# INLINE mplus #-} -instance (Monoid w, MonadFix m) => MonadFix (AccumT w m) where+instance (Monoid w, Functor m, MonadFix m) => MonadFix (AccumT w m) where mfix m = AccumT $ \ w -> mfix $ \ ~(a, _) -> runAccumT (m a) w {-# INLINE mfix #-} @@ -217,7 +217,7 @@ return (a, mempty) {-# INLINE lift #-} -instance (Monoid w, MonadIO m) => MonadIO (AccumT w m) where+instance (Monoid w, Functor m, MonadIO m) => MonadIO (AccumT w m) where liftIO = lift . liftIO {-# INLINE liftIO #-}
Control/Monad/Trans/Select.hs view
@@ -81,8 +81,8 @@ fmap f (SelectT g) = SelectT (fmap f . g . (. f)) {-# INLINE fmap #-} -instance (Monad m) => Applicative (SelectT r m) where- pure = lift . pure+instance (Functor m, Monad m) => Applicative (SelectT r m) where+ pure = lift . return {-# INLINE pure #-} SelectT gf <*> SelectT gx = SelectT $ \ k -> do let h f = liftM f (gx (k . f))@@ -90,7 +90,7 @@ h f {-# INLINE (<*>) #-} -instance (MonadPlus m) => Alternative (SelectT r m) where+instance (Functor m, MonadPlus m) => Alternative (SelectT r m) where empty = mzero {-# INLINE empty #-} (<|>) = mplus@@ -98,7 +98,7 @@ instance (Monad m) => Monad (SelectT r m) where #if !(MIN_VERSION_base(4,8,0))- return = pure+ return = lift . return {-# INLINE return #-} #endif SelectT g >>= f = SelectT $ \ k -> do
changelog view
@@ -1,5 +1,8 @@ -*-change-log-*- +0.5.3.1 Ross Paterson <R.Paterson@city.ac.uk> Feb 2017+ * Fixed for pre-AMP environments+ 0.5.3.0 Ross Paterson <R.Paterson@city.ac.uk> Feb 2017 * Added AccumT and SelectT monad transformers * Deprecated ListT
transformers.cabal view
@@ -1,5 +1,5 @@ name: transformers-version: 0.5.3.0+version: 0.5.3.1 license: BSD3 license-file: LICENSE author: Andy Gill, Ross Paterson