
Note that there is relevant discussion on the pull request.
I think that a fold which reflects the underlying tree structure is not
a bad idea, but it is definitely not in-line with what the current
semantics of
Data.Map.fold are:
-- | /Deprecated./ As of version 0.5, replaced by 'L.foldr'.
--
-- /O(n)/. Fold the values in the map using the given right-associative
-- binary operator. This function is an equivalent of 'foldr' and
is present
-- for compatibility only.
fold :: (a -> b -> b) -> b -> Map k a -> b
fold = L.foldr
{-# INLINE fold #-}
...to be noted as distinct from Data.Foldable.fold, of course! So we might
need to bikeshed names. It is too bad that the intermediate structure cannot
be fused away with fold . mapWithKey!
Edward
Quoting wren ng thornton
On 12/28/12 6:36 PM, Edward Kmett wrote:
I'd like to add foldMapWithKey to Data.Map and Data.IntMap. [...] A patch that implements the proposed operation is available here:
I haven't looked at the patch yet, but +1 for the addition.
-- Live well, ~wren
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries