foldrWithKey package:rio
Reduce this map by applying a binary operator to all
elements, using the given starting value (typically the right-identity
of the operator).
O(n). Fold the keys and values in the map using the given
right-associative binary operator, such that
foldrWithKey f
z == foldr (uncurry f) z . toAscList.
For example,
keys map = foldrWithKey (\k x ks -> k:ks) [] map
let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")"
foldrWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"
O(n). A strict version of
foldrWithKey. Each application
of the operator is evaluated before using the result in the next
application. This function is strict in the starting value.