@@ -31,6 +31,9 @@ import qualified Control.Concurrent.STM.TBQueue as BQ
3131import Control.Exception.Safe
3232import Control.Monad (unless, void, when)
3333import Control.Monad.Base
34+#if MIN_VERSION_base(4, 9, 0)
35+import qualified Control.Monad.Fail as MF
36+#endif
3437import Control.Monad.IO.Class
3538import Control.Monad.IO.Unlift
3639import Control.Monad.Trans.Class
@@ -902,6 +905,12 @@ instance MonadUnliftIO m => MonadUnliftIO (KatipT m) where
902905 withUnliftIO $ \u ->
903906 pure (UnliftIO (unliftIO u . unKatipT))
904907
908+#if MIN_VERSION_base(4, 9, 0)
909+instance MF.MonadFail m => MF.MonadFail (KatipT m) where
910+ fail msg = lift (MF.fail msg)
911+ {-# INLINE fail #-}
912+#endif
913+
905914-------------------------------------------------------------------------------
906915-- | Execute 'KatipT' on a log env.
907916runKatipT :: LogEnv -> KatipT m a -> m a