[Haskell] ANN: iteratee-0.2.1 released

John Lato jwlato at gmail.com
Tue Jun 9 07:09:50 EDT 2009


I would like to announce the release of iteratee-0.2.1, a major update
to the iteratee library.  This library provides types and functions
for performing enumerator/iteratee based I/O operations in Haskell, as
described by Oleg at http://okmij.org/ftp/Streams.html#iteratee.  This
library is intended to be used for incremental, strict I/O and
provides high performance and composability.

The 0.2 version is a large redesign from the initial release, with
many breaking changes.  A major new feature is support for resumable
exceptions.  The interface has been greatly simplified, including the

  -Iteratees that previously returned a result of "Maybe a" will now
usually have a result of "a", making it much simpler to combine
multiple iteratees.  The "bindm" combinator is no longer necessary.
Failed operations should now result in a resumable exception.
User-defined iteratees may still have results of "Maybe a" of course.
  -The types IterateeG and IterateeGM have been unified; IterateeGM is
no longer necessary or supplied.
  -The combinators (>>==) and (==<<) are no longer necessary or
supplied; the same functionality is provided by (>>=) and ($).
  -The new combinator "joinIM" simplifies composing multiple
enumerations in certain monadic contexts.
  -The StreamChunk class now depends upon Monoid and ListLike, and
defaults are provided for all functions, simplifying the work
necessary to create a new StreamChunk instance (although performance
can be greatly improved by providing certain custom implementations).
  -The library depends upon transformers instead of mtl for monadic
composition.  I made this change because it looks like mtl will be
deprecated from HPC in the near future, however it could be reverted
if necessary.

The only difference between 0.2 and 0.2.1 is that I removed a section
on building the test executable from the .cabal file so that test
frameworks wouldn't be required of all users.  All necessary files for
testing are supplied with 0.2.1, they just have to be built manually.

The process of updating earlier code to work with this version can be
more-or-less straightforward, depending upon style and the particular
functionality accessed.  I would be happy to provide assistance if
anyone is in this situation.

Thanks to the following individuals for contributing code to this release:
Oleg Kiselyov
Bas van Dijk
Paulo Tanimoto

Thanks to Johan Tibell for comments and ongoing support.

John Lato

More information about the Haskell mailing list