@@ -215,6 +215,9 @@ import Control.Monad.IO.Class (MonadIO(..))
215215import Data.Functor.Identity (Identity(..))
216216import Data.Int (Int64)
217217import Data.Map.Strict (Map)
218+#if __GLASGOW_HASKELL__ < 804
219+import Data.Semigroup (Semigroup((<>)))
220+#endif
218221
219222import Prelude
220223 hiding (filter, drop, dropWhile, take, takeWhile, zipWith,
@@ -629,7 +632,11 @@ sconcat i = Fold (\x a -> return $ x <> a) (return i) return
629632--
630633-- @since 0.7.0
631634{-# INLINE mconcat #-}
632−mconcat :: (Monad m, Monoid a) => Fold m a a
635+mconcat :: (Monad m, Monoid a
636+#if __GLASGOW_HASKELL__ < 804
637+ , Semigroup a
638+#endif
639+ ) => Fold m a a
633640mconcat = sconcat mempty
634641
635642-- |
@@ -642,7 +649,11 @@ mconcat = sconcat mempty
642649--
643650-- @since 0.7.0
644651{-# INLINABLE foldMap #-}
645−foldMap :: (Monad m, Monoid b) => (a -> b) -> Fold m a b
652+foldMap :: (Monad m, Monoid b
653+#if __GLASGOW_HASKELL__ < 804
654+ , Semigroup b
655+#endif
656+ ) => (a -> b) -> Fold m a b
646657foldMap f = lmap f mconcat
647658
648659-- |