heavy-logger-instances 0.1.0.0 → 0.2.0.0
raw patch · 2 files changed
+33/−3 lines, 2 filesdep +mtlPVP ok
version bump matches the API change (PVP)
Dependencies added: mtl
API changes (from Hackage documentation)
+ System.Log.Heavy.Instances.Throw: instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (System.Log.Heavy.LoggingT.LoggingT m)
+ System.Log.Heavy.Instances.Throw: instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (System.Log.Heavy.LoggingT.LoggingT m)
+ System.Log.Heavy.Instances.Throw: instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (System.Log.Heavy.LoggingT.LoggingT m)
Files
heavy-logger-instances.cabal view
@@ -2,12 +2,14 @@ -- -- see: https://github.com/sol/hpack ----- hash: b62e7d81b220f1d2169f712ba478c44f28f6adc244aec7872b75874f6a3a6a34+-- hash: b28515ba9f195713b669f5ce46894d10ec2bcba100434c30c597ce440f1a858c name: heavy-logger-instances-version: 0.1.0.0+version: 0.2.0.0 synopsis: Orphan instances for data types in heavy-logger package-description: Orphan instances for data types in heavy-logger package+description: This package contains orphan instances for data types in heavy-logger package for:+ * Binary type class (from binary package)+ * MonadThrow, MonadCatch, MonadMask type classes (from exceptions package) for LoggingT transformer. category: System homepage: https://github.com/portnov/heavy-logger#readme bug-reports: https://github.com/portnov/heavy-logger/issues@@ -36,11 +38,13 @@ , exceptions , heavy-logger >=0.3.2.0 , hsyslog >=5.0.1+ , mtl , template-haskell >=2.12 , text >=1.2 , text-format-heavy >=0.1.5.1 exposed-modules: System.Log.Heavy.Instances.Binary+ System.Log.Heavy.Instances.Throw other-modules: Paths_heavy_logger_instances default-language: Haskell2010@@ -57,6 +61,7 @@ , heavy-logger >=0.3.2.0 , heavy-logger-instances , hsyslog >=5.0.1+ , mtl , template-haskell >=2.12 , text >=1.2 , text-format-heavy >=0.1.5.1
+ src/System/Log/Heavy/Instances/Throw.hs view
@@ -0,0 +1,25 @@++-- | This module contains instances of MonadThrow, MonadCatch, MonadMsk type classes for+-- LoggingT monad transformer defined in the heavy-logger package.+--+module System.Log.Heavy.Instances.Throw where++import Control.Monad.Reader+import Control.Monad.Catch +import System.Log.Heavy++instance MonadThrow m => MonadThrow (LoggingT m) where+ throwM e = LoggingT $ lift $ throwM e++instance MonadCatch m => MonadCatch (LoggingT m) where+ catch (LoggingT (ReaderT m)) c = LoggingT $ ReaderT $ \r -> m r `catch` \e -> runLoggingT (c e) r++instance MonadMask m => MonadMask (LoggingT m) where+ mask a = LoggingT $ ReaderT $ \lts -> mask $ \u -> runLoggingT (a $ q u) lts+ where q :: (m a -> m a) -> LoggingT m a -> LoggingT m a+ q u (LoggingT (ReaderT b)) = LoggingT (ReaderT (u . b))++ uninterruptibleMask a = LoggingT $ ReaderT $ \lts -> uninterruptibleMask $ \u -> runLoggingT (a $ q u) lts+ where q :: (m a -> m a) -> LoggingT m a -> LoggingT m a+ q u (LoggingT (ReaderT b)) = LoggingT (ReaderT (u . b))+