[PATCH] Split Data.IntMap into Data.IntMap.Strict and Data.IntMap.Lazy.

Milan Straka fox at ucw.cz
Sat Sep 17 00:13:36 CEST 2011


> On request of Milan, this is a follow up proposal to
> 
>     http://www.haskell.org/pipermail/libraries/2011-May/016362.html
> 
> Here is what this patch specifically implements:
> 
>     - Shared representation between lazy and strict variants
>     - Lazy/Strict modules exporting appropriate operations for each

The reason I requested this proposal is that we are talking about
a bigger change and I was not sure what the community's opinion is.

Current proposal splits the Data.IntMap into two modules -- one
implementing IntMap with lazy values and other with strict values.  The
datatypes are the same, so users can freely use value-strict or
value-lazy API. This allows reasonable naming of methods like insertWith'
and also provides value-strict implementation of all methods.

Methods insertWith' and insertWithKey' of Data.IntMap will be documented
as "to be deprecated", then deprecated in the future and removed in even
farther future. I assume that is a reasonable way to do very slow
removal.

As mentioned, we have no consensus on whether we should provide
Data.IntMap.Lazy, which would export the Data.IntMap methods without the
insertWith' and insertWithKey'. Currently I am against it.

If we pursue this, we should do the same thing with Data.Map, as well.

Cheers,
Milan



More information about the Libraries mailing list