[Haskell-cafe] ANN: list-extras 0.1.0
wren ng thornton
wren at freegeek.org
Tue Jul 22 22:46:01 EDT 2008
hello all~
I'm pleased to announce the initial version of list-extras, a home for
common not-so-common list functions.
There are many simple but non-trivial functions for lists which
Data.List lacks. Typically we write a version and include it in a larger
project or store it in a local source tree for personal jobs. But
neither of these approaches makes it easy to distribute the code and
take advantage of open-source development for improving the code. Since
I had code from both approaches, I'm taking the first step and putting a
package out there. So far it's not too large though I'll be adding
things as they come up. If you have functions you think would belong,
feel free to contact me.
list-extras includes:
- Prelude.Listless
This module provides the "Prelude" but removing all the list
functions. This is helpful for modules that overload those function
names to work for other types.
- Data.List.Extras.LazyLength
This module provides least-strict functions for getting a list's
length and doing natural things with it. On GHC this module also uses
rewrite rules to convert certain calls to 'length' into our least-strict
versions. [We could do this inefficiently by defining a version of
'length' which returns a Peano integer, but this module is more efficient.]
- Data.List.Extras.Pair
This module provides safe zipping functions which will fail (return
'Nothing') on uneven length lists. [We could do this by getting the
lengths first and comparing, but this module is less strict when the
lengths are uneven, and we only traverse the lists once.]
- Data.List.Extras.ArgMax
This module provides variants of the 'maximum' and 'minimum'
functions which return the element for which some function is maximized
or minimized. [We could do this by a decorate-fold-undecorate pattern,
but this version is more space efficient.]
Links to the hackage and darcs copies of list-extras can be found at:
http://code.haskell.org/~wren/
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list