monad-logger 0.3.20.2 → 0.3.21
raw patch · 3 files changed
+31/−1 lines, 3 files
Files
- ChangeLog.md +4/−0
- Control/Monad/Logger.hs +26/−0
- monad-logger.cabal +1/−1
ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.3.21++* Reimplemented Functor & Applicative for LoggingT & NoLoggingT [#125](https://github.com/kazu-yamamoto/logger/issues/125) [#126](https://github.com/kazu-yamamoto/logger/pull/126)+ ## 0.3.20.2 * Support for GHC 8.2
Control/Monad/Logger.hs view
@@ -364,13 +364,25 @@ -- Since 0.2.4 newtype NoLoggingT m a = NoLoggingT { runNoLoggingT :: m a } +#if __GLASGOW_HASKELL__ < 710 instance Monad m => Functor (NoLoggingT m) where fmap = liftM instance Monad m => Applicative (NoLoggingT m) where pure = return (<*>) = ap+#else+instance Functor m => Functor (NoLoggingT m) where+ fmap f = NoLoggingT . fmap f . runNoLoggingT+ {-# INLINE fmap #-} +instance Applicative m => Applicative (NoLoggingT m) where+ pure = NoLoggingT . pure+ {-# INLINE pure #-}+ f <*> a = NoLoggingT (runNoLoggingT f <*> runNoLoggingT a)+ {-# INLINE (<*>) #-}+#endif+ instance Monad m => Monad (NoLoggingT m) where return = NoLoggingT . return NoLoggingT ma >>= f = NoLoggingT $ ma >>= runNoLoggingT . f@@ -452,12 +464,26 @@ -- Since 0.2.2 newtype LoggingT m a = LoggingT { runLoggingT :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a } +#if __GLASGOW_HASKELL__ < 710 instance Monad m => Functor (LoggingT m) where fmap = liftM instance Monad m => Applicative (LoggingT m) where pure = return (<*>) = ap+#else+instance Functor m => Functor (LoggingT m) where+ fmap f logger = LoggingT $ \loggerFn -> fmap f $ (runLoggingT logger) loggerFn+ {-# INLINE fmap #-}++instance Applicative m => Applicative (LoggingT m) where+ pure = LoggingT . const . pure+ {-# INLINE pure #-}+ loggerF <*> loggerA = LoggingT $ \loggerFn ->+ (runLoggingT loggerF) loggerFn+ <*> (runLoggingT loggerA) loggerFn+ {-# INLINE (<*>) #-}+#endif instance Monad m => Monad (LoggingT m) where return = LoggingT . const . return
monad-logger.cabal view
@@ -1,5 +1,5 @@ name: monad-logger-version: 0.3.20.2+version: 0.3.21 synopsis: A class of monads which can log messages. description: Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/monad-logger>. homepage: https://github.com/kazu-yamamoto/logger