Proposal: add foldMapWithIndex to Data.Sequence

foldMapWithIndex :: Monoid m => (Int -> a -> m) -> Seq a -> m This would match both Data.Map.foldMapWithKey and Control.Lens.Indexed.ifoldMap, filling out the indexed fold menagerie. Annoyingly, the straightforward implementation I've come up with is rather slow when used with Endo to implement either foldlWithIndex or foldrWithIndex. I suspect the polymorphic recursion inherent in these sequences is blinding GHC's optimizer. Oh well.

On 05/20/2016 07:20 PM, David Feuer wrote:
foldMapWithIndex :: Monoid m => (Int -> a -> m) -> Seq a -> m
This would match both Data.Map.foldMapWithKey and Control.Lens.Indexed.ifoldMap, filling out the indexed fold menagerie.
+1 on the general principle that having as uniform an interface to the 'collections' is a Good Thing.
participants (2)
-
Bardur Arantsson
-
David Feuer