[Haskell-cafe] containers-

David Feuer david.feuer at gmail.com
Tue Jul 14 20:02:52 UTC 2020

At long last, we have released containers- The most important
changes in this release are bug fixes for IntMap traversals:

* Fix traverse and traverseWithKey for IntMap, which would previously
produce invalid IntMaps when the input contained negative keys
(Thanks, Felix Paulusma).

* Fix the traversal order of various functions for Data.IntMap:
traverseWithKey, traverseMaybeWithKey, filterWithKeyA, minimum,
maximum, mapAccum, mapAccumWithKey, mapAccumL, mapAccumRWithKey,
mergeA (Thanks, Felix Paulusma, Simon Jakobi). These now traverse in
key order; previously they would traverse non-negative keys before
negative keys.

If you traverse any IntMaps, please take note of these changes.

We also have several additions to the API:

* Add compose for Map and IntMap (Thanks, Alexandre Esteves).

* Add alterF for Set and IntSet (Thanks, Simon Jakobi).

* Add Data.IntSet.mapMonotonic (Thanks, Javran Cheng).

* Add instance Bifoldable Map (Thanks, Joseph C. Sible).

Performance improvements of note:

* Make (<*) for Data.Sequence incrementally asymptotically optimal
(Thanks, David Feuer). This finally completes the task, begun in
December 2014, of making all the Applicative methods for sequences
asymptotically optimal even when their results are consumed
incrementally. Many thanks to Li-Yao Xia and Bertram Felgenhauer for
helping to clean up and begin to document this rather tricky code.

* Speed up fromList and related functions in Data.IntSet, Data.IntMap
and Data.IntMap.Strict (Thanks, Bertram Felgenhauer).

* Use count{Leading,Trailing}Zeros in Data.IntSet internals (Thanks,
Alex Biehl).

There are also numerous documentation improvements and packaging
updates. Please see the changelog for full details.

Thanks to all the contributors,
The containers team

More information about the Haskell-Cafe mailing list