diff --git a/Control/Monad/Trans/Accum.hs b/Control/Monad/Trans/Accum.hs index ecb664bd4f1aaced7c9452ac7a0bcb66078a44d6..b1ec83d3e19295223ea03128fab46e9f70992f0f 100644 --- a/Control/Monad/Trans/Accum.hs +++ b/Control/Monad/Trans/Accum.hs @@ -167,8 +167,8 @@ instance (Functor m) => Functor (AccumT w m) where 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 @@ instance (Monoid w, Monad m) => Applicative (AccumT w m) where 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 @@ instance (Monoid w, Fail.MonadFail m) => Fail.MonadFail (AccumT w m) where {-# 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 @@ instance (Monoid w) => MonadTrans (AccumT w) where 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 #-} diff --git a/Control/Monad/Trans/Select.hs b/Control/Monad/Trans/Select.hs index 12a798ec7726dd8775e7faa3755841d8b2afc6a9..ad61f4e84805a1c82311921a130a3911dd9e5a72 100644 --- a/Control/Monad/Trans/Select.hs +++ b/Control/Monad/Trans/Select.hs @@ -81,8 +81,8 @@ instance (Functor m) => Functor (SelectT r m) where 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 @@ instance (Monad m) => Applicative (SelectT r m) where 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 (MonadPlus m) => Alternative (SelectT r m) where 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 diff --git a/changelog b/changelog index 2ad7539ab0dbe86dd58ff4ed1a29460711ca6ae3..7f7590b83e8649f79dca36e97198a6124a96c378 100644 --- a/changelog +++ b/changelog @@ -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 diff --git a/transformers.cabal b/transformers.cabal index 024eea884d509ccdeba63009821ae23395f14003..08646ed79f261acfe4f3935e7358165be437362b 100644 --- a/transformers.cabal +++ b/transformers.cabal @@ -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