packages feed

deriving-trans 0.9.0.0 → 0.9.1.0

raw patch · 4 files changed

+89/−1 lines, 4 filesdep +monad-loggerPVP ok

version bump matches the API change (PVP)

Dependencies added: monad-logger

API changes (from Hackage documentation)

+ Control.Monad.Trans.Compose: instance (Control.Monad.IO.Class.MonadIO (t2 m), Control.Monad.IO.Class.MonadIO m, Control.Monad.Trans.Class.MonadTrans t2) => Control.Monad.Logger.MonadLoggerIO (Control.Monad.Trans.Compose.ComposeT Control.Monad.Logger.LoggingT t2 m)
+ Control.Monad.Trans.Compose: instance (Control.Monad.IO.Class.MonadIO (t2 m), Control.Monad.IO.Class.MonadIO m, Control.Monad.Trans.Class.MonadTrans t2) => Control.Monad.Logger.MonadLoggerIO (Control.Monad.Trans.Compose.ComposeT Control.Monad.Logger.NoLoggingT t2 m)
+ Control.Monad.Trans.Compose: instance (Control.Monad.Logger.MonadLogger (t2 m), Control.Monad.Trans.Class.MonadTrans t1) => Control.Monad.Logger.MonadLogger (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance (Control.Monad.Logger.MonadLoggerIO (t2 m), Control.Monad.Trans.Class.MonadTrans t1, Control.Monad.IO.Class.MonadIO m, Control.Monad.Trans.Class.MonadTrans t2) => Control.Monad.Logger.MonadLoggerIO (Control.Monad.Trans.Compose.ComposeT t1 t2 m)
+ Control.Monad.Trans.Compose: instance Control.Monad.IO.Class.MonadIO (t2 m) => Control.Monad.Logger.MonadLogger (Control.Monad.Trans.Compose.ComposeT Control.Monad.Logger.LoggingT t2 m)
+ Control.Monad.Trans.Compose: instance GHC.Base.Monad (t2 m) => Control.Monad.Logger.MonadLogger (Control.Monad.Trans.Compose.ComposeT Control.Monad.Logger.NoLoggingT t2 m)
+ Control.Monad.Trans.Compose: instance GHC.Base.Monad (t2 m) => Control.Monad.Logger.MonadLogger (Control.Monad.Trans.Compose.ComposeT Control.Monad.Logger.WriterLoggingT t2 m)
+ Control.Monad.Trans.Elevator: instance (Control.Monad.Logger.MonadLogger m, Control.Monad.Trans.Class.MonadTrans t) => Control.Monad.Logger.MonadLogger (Control.Monad.Trans.Elevator.Elevator t m)
+ Control.Monad.Trans.Elevator: instance (Control.Monad.Logger.MonadLoggerIO m, Control.Monad.Trans.Class.MonadTrans t) => Control.Monad.Logger.MonadLoggerIO (Control.Monad.Trans.Elevator.Elevator t m)

Files

CHANGELOG.md view
@@ -1,5 +1,11 @@ # Revision history for deriving-trans +## 0.9.1.0 *12 Jul 2023*++* Support new optional dependency monad-logger `>= 0.3.38`.+* Add `MonadLogger` and `MonadLoggerIO` instances to `Elevator` and `ComposeT`.+* Add `MonadLogger` and `MonadLoggerIO` "base-case" instances for `LoggingT`, `NoLoggingT` and `WriterLoggingT`.+ ## 0.9.0.0 *05 Jul 2023*  * Drop support for `GHC < 9.6`.
deriving-trans.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: deriving-trans-version: 0.9.0.0+version: 0.9.1.0 synopsis: Derive instances for monad transformer stacks description:   Implementing instances for monad transformer stacks can be tedious.@@ -35,6 +35,11 @@   description:     Implement instances for `MonadLogic`. +flag monad-logger+  default: True+  description:+    Implement instances for `MonadLogger` and `MonadLoggerIO`.+ flag mtl   default: True   description:@@ -79,6 +84,9 @@   if flag(logict)     build-depends:       , logict >= 0.8.0.0+  if flag(monad-logger)+    build-depends:+      , monad-logger >= 0.3.38   if flag(mtl)     other-modules:       Control.Monad.Accum.OrphanInstances
src/Control/Monad/Trans/Compose.hs view
@@ -29,6 +29,10 @@ import Control.Monad.Logic.Class qualified as LogicT #endif +#if defined(VERSION_monad_logger)+import Control.Monad.Logger qualified as MonadLogger+#endif+ #if defined(VERSION_mtl) import Control.Monad.Accum qualified as Mtl import Control.Monad.Accum.OrphanInstances qualified as Mtl ()@@ -300,6 +304,63 @@   instance     ( Monad (t2 m)     ) => LogicT.MonadLogic (ComposeT LogicT.T.LogicT t2 m)+#endif++#if defined(VERSION_monad_logger)+-- | /OVERLAPPABLE/.+-- Elevated to @(t2 m)@.+deriving via Elevator t1 (t2 (m :: Type -> Type))+  instance {-# OVERLAPPABLE #-}+    ( MonadLogger.MonadLogger (t2 m)+    , MonadTrans t1+    ) => MonadLogger.MonadLogger (ComposeT t1 t2 m)++-- | Set by 'MonadLogger.LoggingT'.+deriving via MonadLogger.LoggingT (t2 (m :: Type -> Type))+  instance+    ( MonadIO (t2 m)+    ) => MonadLogger.MonadLogger (ComposeT MonadLogger.LoggingT t2 m)++-- | Set by 'MonadLogger.NoLoggingT'.+deriving via MonadLogger.NoLoggingT (t2 (m :: Type -> Type))+  instance+    ( Monad (t2 m)+    ) => MonadLogger.MonadLogger (ComposeT MonadLogger.NoLoggingT t2 m)++-- | Set by 'MonadLogger.WriterLoggingT'.+deriving via MonadLogger.WriterLoggingT (t2 (m :: Type -> Type))+  instance+    ( Monad (t2 m)+    ) => MonadLogger.MonadLogger (ComposeT MonadLogger.WriterLoggingT t2 m)++-- TODO: `MonadIO m` and `MonadTrans t2` should not be required for this instance+-- | /OVERLAPPABLE/.+-- Elevated to @(t2 m)@.+deriving via Elevator t1 (t2 (m :: Type -> Type))+  instance {-# OVERLAPPABLE #-}+    ( MonadLogger.MonadLoggerIO (t2 m)+    , MonadTrans t1+    , MonadIO m+    , MonadTrans t2+    ) => MonadLogger.MonadLoggerIO (ComposeT t1 t2 m)++-- TODO: `MonadIO m` and `MonadTrans t2` should not be required for this instance+-- | Set by 'MonadLogger.LoggingT'.+deriving via MonadLogger.LoggingT (t2 (m :: Type -> Type))+  instance+    ( MonadIO (t2 m)+    , MonadIO m+    , MonadTrans t2+    ) => MonadLogger.MonadLoggerIO (ComposeT MonadLogger.LoggingT t2 m)++-- TODO: `MonadIO m` and `MonadTrans t2` should not be required for this instance+-- | Set by 'MonadLogger.NoLoggingT'.+deriving via MonadLogger.NoLoggingT (t2 (m :: Type -> Type))+  instance+    ( MonadIO (t2 m)+    , MonadIO m+    , MonadTrans t2+    ) => MonadLogger.MonadLoggerIO (ComposeT MonadLogger.NoLoggingT t2 m) #endif  #if defined(VERSION_mtl)
src/Control/Monad/Trans/Elevator.hs view
@@ -23,6 +23,10 @@ import Control.Monad.Logic.Class qualified as LogicT #endif +#if defined(VERSION_monad_logger)+import Control.Monad.Logger qualified as MonadLogger+#endif+ #if defined(VERSION_mtl) import Control.Monad.Accum qualified as Mtl import Control.Monad.Cont.Class qualified as Mtl@@ -145,6 +149,15 @@ instance (LogicT.MonadLogic m, MonadTransControlIdentity t) => LogicT.MonadLogic (Elevator t m) where   msplit tma = (((\(a, b) -> (a, lift b)) <$>) <$>) $     liftWithIdentity $ \runT -> LogicT.msplit $ runT tma+#endif++#if defined(VERSION_monad_logger)+instance (MonadLogger.MonadLogger m, MonadTrans t) => MonadLogger.MonadLogger (Elevator t m) where+  monadLoggerLog location logSource logLevel = lift .+    MonadLogger.monadLoggerLog location logSource logLevel++instance (MonadLogger.MonadLoggerIO m, MonadTrans t) => MonadLogger.MonadLoggerIO (Elevator t m) where+  askLoggerIO = lift MonadLogger.askLoggerIO #endif  #if defined(VERSION_mtl)