deriving-trans 0.7.0.0 → 0.8.0.0
raw patch · 3 files changed
+102/−13 lines, 3 filesdep ~monad-controldep ~monad-control-identitydep ~primitivePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: monad-control, monad-control-identity, primitive, transformers-base, unliftio-core
API changes (from Hackage documentation)
+ Control.Monad.Trans.Compose: instance (Control.Monad.Fail.MonadFail (t2 m), Control.Monad.Trans.Class.MonadTrans t1) => Control.Monad.Fail.MonadFail (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance (Control.Monad.Fix.MonadFix (t2 m), Control.Monad.Trans.Control.Identity.MonadTransControlIdentity t1) => Control.Monad.Fix.MonadFix (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance (Control.Monad.Zip.MonadZip (t2 m), Control.Monad.Trans.Control.Identity.MonadTransControlIdentity t1) => Control.Monad.Zip.MonadZip (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance (GHC.Base.Alternative (t2 m), GHC.Base.Monad (t2 m), Control.Monad.Trans.Control.MonadTransControl t1) => GHC.Base.Alternative (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance (GHC.Base.MonadPlus (t2 m), Control.Monad.Trans.Control.MonadTransControl t1) => GHC.Base.MonadPlus (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance (GHC.Base.Monoid e, GHC.Base.Monad (t2 m)) => GHC.Base.Alternative (Control.Monad.Trans.Compose.ComposeT (Control.Monad.Trans.Except.ExceptT e) t2 m)
+ Control.Monad.Trans.Compose: instance GHC.Base.Monad (t2 m) => Control.Monad.Fail.MonadFail (Control.Monad.Trans.Compose.ComposeT Control.Monad.Catch.Pure.CatchT t2 m)
+ Control.Monad.Trans.Compose: instance GHC.Base.Monad (t2 m) => Control.Monad.Fail.MonadFail (Control.Monad.Trans.Compose.ComposeT Control.Monad.Trans.Maybe.MaybeT t2 m)
+ Control.Monad.Trans.Compose: instance GHC.Base.Monad (t2 m) => GHC.Base.Alternative (Control.Monad.Trans.Compose.ComposeT Control.Monad.Catch.Pure.CatchT t2 m)
+ Control.Monad.Trans.Compose: instance GHC.Base.Monad (t2 m) => GHC.Base.Alternative (Control.Monad.Trans.Compose.ComposeT Control.Monad.Trans.Maybe.MaybeT t2 m)
Files
- CHANGELOG.md +15/−0
- deriving-trans.cabal +6/−6
- src/Control/Monad/Trans/Compose.hs +81/−7
CHANGELOG.md view
@@ -1,5 +1,20 @@ # Revision history for deriving-trans +## 0.8.0.0 *31 Jan 2023*++* Update version boundaries of dependencies:+ - monad-control `>= 1.0.3`+ - monad-control-identity `>= 0.2.0.0`+ - transformers-base `>= 0.4.6`+ - primitive `>= 0.7.1.0`+ - unliftio-core `>= 0.2.0.0`+* Add common instances to `ComposeT`:+ - `Alternative` (recursive and "base-case")+ - `MonadFail` (recursive and "base-case")+ - `MonadFix` (recursive; didn't find any "base-case")+ - `MonadPlus` (determined by `Alternative`)+ - `MonadZip` (recursive; didn't find any "base-case")+ ## 0.7.0.0 *31 Jan 2023* * Update required version bounds for `exceptions` to `>= 0.10.5`.
deriving-trans.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: deriving-trans-version: 0.7.0.0+version: 0.8.0.0 synopsis: Derive instances for monad transformer stacks description: Implementing instances for monad transformer stacks can be tedious.@@ -64,10 +64,10 @@ Control.Monad.Trans.Elevator build-depends: , base >= 4.16.1.0 && < 5- , monad-control- , monad-control-identity+ , monad-control >= 1.0.3+ , monad-control-identity >= 0.2.0.0 , transformers >= 0.6- , transformers-base+ , transformers-base >= 0.4.6 if flag(exceptions) build-depends: , exceptions >= 0.10.5@@ -79,7 +79,7 @@ , mtl >= 2.3 if flag(primitive) build-depends:- , primitive+ , primitive >= 0.7.1.0 if flag(random) build-depends: , random >= 1.2@@ -88,7 +88,7 @@ , resourcet >= 1.2 if flag(unliftio) build-depends:- , unliftio-core+ , unliftio-core >= 0.2.0.0 hs-source-dirs: src default-language: GHC2021 default-extensions:
src/Control/Monad/Trans/Compose.hs view
@@ -4,14 +4,21 @@ module Control.Monad.Trans.Compose where +import Control.Applicative+import Control.Monad import Control.Monad.Base+import Control.Monad.Fix import Control.Monad.IO.Class import Control.Monad.Trans.Class import Control.Monad.Trans.Control import Control.Monad.Trans.Control.Identity import Control.Monad.Trans.Elevator+import Control.Monad.Zip import Data.Kind +import Control.Monad.Trans.Except qualified as T+import Control.Monad.Trans.Maybe qualified as T+ #if defined(VERSION_exceptions) import Control.Monad.Catch qualified as Exceptions import Control.Monad.Catch.Pure qualified as Exceptions.T@@ -104,13 +111,6 @@ -- | Elevated to @m@. deriving via Elevator (ComposeT t1 t2) m instance- ( MonadIO m- , MonadTrans (ComposeT t1 t2)- ) => MonadIO (ComposeT t1 t2 m)---- | Elevated to @m@.-deriving via Elevator (ComposeT t1 t2) m- instance ( MonadBase b m , MonadTrans (ComposeT t1 t2) ) => MonadBase b (ComposeT t1 t2 m)@@ -129,7 +129,81 @@ , MonadTransControlIdentity (ComposeT t1 t2) ) => MonadBaseControlIdentity b (ComposeT t1 t2 m) +-- | /OVERLAPPABLE/.+-- Elevated to @(t2 m)@.+deriving via Elevator t1 (t2 (m :: Type -> Type))+ instance {-# OVERLAPPABLE #-}+ ( Alternative (t2 m)+ , Monad (t2 m)+ , MonadTransControl t1+ ) => Alternative (ComposeT t1 t2 m)++-- | Set by 'T.ExceptT'.+deriving via T.ExceptT e (t2 (m :: Type -> Type))+ instance+ ( Monoid e+ , Monad (t2 m)+ ) => Alternative (ComposeT (T.ExceptT e) t2 m)++-- | Set by 'T.MaybeT'.+deriving via T.MaybeT (t2 (m :: Type -> Type))+ instance+ ( Monad (t2 m)+ ) => Alternative (ComposeT T.MaybeT t2 m)++-- | /OVERLAPPABLE/.+-- Elevated to @(t2 m)@.+deriving via Elevator t1 (t2 (m :: Type -> Type))+ instance {-# OVERLAPPABLE #-}+ ( MonadFail (t2 m)+ , MonadTrans t1+ ) => MonadFail (ComposeT t1 t2 m)++-- | Set by 'T.MaybeT'.+deriving via T.MaybeT (t2 (m :: Type -> Type))+ instance+ ( Monad (t2 m)+ ) => MonadFail (ComposeT T.MaybeT t2 m)++-- | /OVERLAPPABLE/.+-- Elevated to @(t2 m)@.+deriving via Elevator t1 (t2 (m :: Type -> Type))+ instance {-# OVERLAPPABLE #-}+ ( MonadFix (t2 m)+ , MonadTransControlIdentity t1+ ) => MonadFix (ComposeT t1 t2 m)++-- | Elevated to @m@.+deriving via Elevator (ComposeT t1 t2) m+ instance+ ( MonadIO m+ , MonadTrans (ComposeT t1 t2)+ ) => MonadIO (ComposeT t1 t2 m)++-- | Determined by 'Alternative'.+instance (MonadPlus (t2 m), MonadTransControl t1) => MonadPlus (ComposeT t1 t2 m)++-- | /OVERLAPPABLE/.+-- Elevated to @(t2 m)@.+deriving via Elevator t1 (t2 (m :: Type -> Type))+ instance {-# OVERLAPPABLE #-}+ ( MonadZip (t2 m)+ , MonadTransControlIdentity t1+ ) => MonadZip (ComposeT t1 t2 m)+ #if defined(VERSION_exceptions)+-- | Set by 'Exceptions.T.CatchT'.+deriving via Exceptions.T.CatchT (t2 (m :: Type -> Type))+ instance+ ( Monad (t2 m)+ ) => Alternative (ComposeT Exceptions.T.CatchT t2 m)++-- | Set by 'Exceptions.T.CatchT'.+deriving via Exceptions.T.CatchT (t2 (m :: Type -> Type))+ instance+ ( Monad (t2 m)+ ) => MonadFail (ComposeT Exceptions.T.CatchT t2 m)+ -- | /OVERLAPPABLE/. -- Elevated to @(t2 m)@. deriving via Elevator t1 (t2 (m :: Type -> Type))