mmorph 1.1.2 → 1.1.3
raw patch · 3 files changed
+30/−2 lines, 3 filesdep ~base
Dependency ranges changed: base
Files
- CHANGELOG.md +5/−0
- mmorph.cabal +1/−1
- src/Control/Monad/Trans/Compose.hs +24/−1
CHANGELOG.md view
@@ -1,3 +1,8 @@+1.1.3++* Add an `MFunctor` instance for `ComposeT` for GHC >= 8.6+* Add GHC 8.8 support+ 1.1.2 * Conditionally disable `Polykinds` to support older versions of GHC
mmorph.cabal view
@@ -1,5 +1,5 @@ Name: mmorph-Version: 1.1.2+Version: 1.1.3 Cabal-Version: >= 1.8.0.2 Build-Type: Simple License: BSD3
src/Control/Monad/Trans/Compose.hs view
@@ -3,7 +3,12 @@ {-# LANGUAGE KindSignatures #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE CPP #-} +#if __GLASGOW_HASKELL__ >= 806+{-# LANGUAGE QuantifiedConstraints #-}+#endif+ {-| Composition of monad transformers. A higher-order version of "Data.Functor.Compose". -}@@ -30,6 +35,11 @@ import Data.Traversable (Traversable(traverse, sequenceA, mapM, sequence)) import Prelude hiding (foldr, foldl, foldr1, foldl1, mapM, sequence) +#if __GLASGOW_HASKELL__ >= 800+import Control.Monad.Fail (MonadFail(..))+import qualified Control.Monad.Fail+#endif+ infixr 9 `ComposeT` -- | Composition of monad transformers.@@ -41,6 +51,12 @@ where lift = ComposeT . hoist lift . lift +#if __GLASGOW_HASKELL__ >= 806+instance (MFunctor f, MFunctor g, forall m. Monad m => Monad (g m))+ => MFunctor (ComposeT f g) where+ hoist f (ComposeT m) = ComposeT (hoist (hoist f) m)+#endif+ instance Functor (f (g m)) => Functor (ComposeT f g m) where fmap f (ComposeT m) = ComposeT (fmap f m) @@ -57,7 +73,14 @@ instance Monad (f (g m)) => Monad (ComposeT f g m) where return a = ComposeT (return a) m >>= f = ComposeT (getComposeT m >>= \x -> getComposeT (f x))- fail e = ComposeT (fail e)+#if __GLASGOW_HASKELL__ < 808+ fail e = ComposeT (Prelude.fail e)+#endif++#if __GLASGOW_HASKELL__ >= 800+instance MonadFail (f (g m)) => MonadFail (ComposeT f g m) where+ fail e = ComposeT (Control.Monad.Fail.fail e)+#endif instance MonadPlus (f (g m)) => MonadPlus (ComposeT f g m) where mzero = ComposeT mzero