EDIT: Don’t use this package, but use instead Data.List.Split by Brent Yorgey. I didn’t see that a package like his existed! This module will hopefully be removed from hackage if they can do that.
I just finished the initial release of a simple module called list-grouping that contains functions to partition a list into sub-lists in various ways, based on some predicate or integer offset. Functions like these are a little awkward to write and I was surprised when I didn’t see anything on hackage!
Check out the package description and install it with:
$ cabal install list-grouping
Here is an example from a previous post to build a binary tree from an in-order list, which uses the above library:
1 2 3 4 5 6 7 8 9 10 11 12
I’m sure the functions can be made more efficient, to take advantage of fusion or what-not, and I hope the library will eventually contain the most efficient implementations possible.
I also am looking for suggestions for other useful list grouping functions to include. Send your suggestions along! You can get the darcs source with:
$ darcs get http://coder.bsimmons.name/code/ListGrouping/