packages feed

monad-logger 0.3.20.2 → 0.3.21

raw patch · 3 files changed

+31/−1 lines, 3 files

Files

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