@@ -313,6 +313,7 @@ import qualified Data.Set as Set
313313import qualified Prelude
314314import qualified Streamly.Internal.Data.Array.Foreign.Mut.Type as MA
315315import qualified Streamly.Internal.Data.Array.Foreign.Type as Array
316+import qualified Streamly.Internal.Data.Fold.Window as FoldW
316317import qualified Streamly.Internal.Data.IsMap as IsMap
317318import qualified Streamly.Internal.Data.Pipe.Type as Pipe
318319import qualified Streamly.Internal.Data.Ring.Foreign as Ring
@@ -336,6 +337,7 @@ import Streamly.Internal.Data.Fold.Type
336337-- >>> import qualified Streamly.Data.Fold as Fold
337338-- >>> import qualified Streamly.Internal.Data.Fold as Fold
338339-- >>> import qualified Streamly.Internal.Data.Fold.Type as Fold
340+-- >>> import qualified Streamly.Internal.Data.Fold.Window as FoldW
339341-- >>> import qualified Streamly.Data.Array.Foreign as Array
340342-- >>> import qualified Streamly.Internal.Data.Parser as Parser
341343-- >>> import Streamly.Internal.Data.Stream.Serial (SerialT(..))
@@ -681,12 +683,17 @@ countDistinctInt = fmap (\(Tuple' _ n) -> n) $ foldl' step initial
681683-- identity (@0@) when the stream is empty. Note that this is not numerically
682684-- stable for floating point numbers.
683685--
684−-- > sum = fmap getSum $ Fold.foldMap Sum
686+-- >>> sum = FoldW.cumulative FoldW.sum
687+--
688+-- Same as following but numerically stable:
689+--
690+-- >>> sum = Fold.foldl' (+) 0
691+-- >>> sum = fmap Data.Monoid.getSum $ Fold.foldMap Data.Monoid.Sum
685692--
686693-- @since 0.7.0
687694{-# INLINE sum #-}
688695sum :: (Monad m, Num a) => Fold m a a
689−sum = foldl' (+) 0
696+sum = FoldW.cumulative FoldW.sum
690697
691698-- | Determine the product of all elements of a stream of numbers. Returns
692699-- multiplicative identity (@1@) when the stream is empty. The fold terminates