
On 9/25/10 9:41 AM, Johan Tibell wrote:
On Sat, Sep 25, 2010 at 2:41 PM, Ian Lynagh
wrote: On Fri, Sep 24, 2010 at 07:09:56PM +0200, Milan Straka wrote:
I therefore propose to: a) add foldrWithKey and foldlWithKey to IntMap, make foldWithKey deprecated and synonymous for foldrWithKey.
Agree.
Why not also add foldl and foldr to Map and IntMap, and deprecate fold?
I think having all these with and without key version of all the functions in Data.{Map,Set} is a misstake. They don't improve performance (I've checked) and they almost double the size of the API (which is a whopping ~150 functions!). We probably* can't do much about the functions already in the API, but lets discuss whether we really want to continue that pattern.
Why not (a) only specify the *WithKey variants explicitly, and (b) provide the rest via the Foldable class? There are no class methods which cannot be expressed easily by the explicit API; we'll want the Foldable instance anyways;... The only breakage I can foresee is that people can't use the qualified import name with the Foldable methods. -- Live well, ~wren