--------------------------
-- Folds
--------------------------

-- | Obtain a 'Fold' by lifting an operation that returns a 'Foldable' result.
--
-- This can be useful to lift operations from @Data.List@ and elsewhere into a 'Fold'.
--
-- >>> [1,2,3,4]^..folding tail
-- [2,3,4]
folding :: Foldable f => (s -> f a) -> Fold s a
folding sfa agb = coerce . traverse_ agb . sfa
folding :: Foldable f => (s -> f a) -> Fold s a
folding sfa agb = coerce . traverse_ agb . sfa
folding sfa agb = coerce . traverse_ agb . sfa