[Haskell-cafe] ANN: containers-

Johan Tibell johan.tibell at gmail.com
Fri May 4 04:52:44 CEST 2012

Hi all,

I'm proud to announce a new major release of the containers package :


There has been a whopping 160 commits since the last release. The
major improvements are:

* a clearer distinction between value-lazy and value-strict containers,
* performance improvements across the board,
* a big internal clean-up, and
* new functions for e.g. merging, updating, and searching containers.

The first item is perhaps the most visible. While the old Data.Map and
Data.IntMap modules will continue to exist for the foreseeable future,
we've abandoned the practice of having the strict and lazy versions of
each function distinguished by an apostrophe. The distinction is
instead made at the module level, by introducing four new modules:

* Data.Map.Strict
* Data.Map.Lazy
* Data.IntMap.Strict
* Data.IntMap.Lazy

This split has three benefits:

* It makes the choice between value-strict and value-lazy containers
more declarative; you pick once at import time, instead of having to
remember to use the strict or lazy versions of a function every time
you modify the container.
* It alleviates a common source of performance issues, by forcing the
user to think about the strictness properties upfront. For example,
using insertWith instead of insertWith' is a common source of
containers-related performance bugs.
* There are fewer functions per module, making it easier to get an
overview of each module.

Note that the types used in the strict and lazy APIs are the same, so
you can still use the same container in a "mixed" manner, if needed.

Contributors to this release:

Milan Straka
Johan Tibell
Joachim Breitner
Edward Z. Yang
Herbert Valerio Riedel
Matt West
Max Bolingbroke

The containers maintainers

More information about the Haskell-Cafe mailing list