[Haskell-cafe] ANNOUNCE: iterIO-0.1 - iteratee-based IO with pipe operators

Maciej Marcin Piechotka uzytkownik2 at gmail.com
Fri May 6 12:17:39 CEST 2011

On Thu, 2011-05-05 at 21:15 -0700, David Mazieres wrote:
> Hi, everyone.  I'm pleased to announce the release of a new iteratee
> implementation, iterIO:
> 	http://hackage.haskell.org/package/iterIO
> IterIO is an attempt to make iteratees easier to use through an
> interface based on pipeline stages reminiscent of Unix command
> pipelines.  Particularly if you've looked at iteratees before and been
> intimidated, please have a look at iterIO to see if it makes them more
> accessible.
> Some aspects of iterIO that should simplify learning and using
> iteratees are:
>    * Every aspect of the library is thoroughly document in haddock
>      including numerous examples of use.
>    * Enumerators are easy to build out of iteratees.
>    * There is no difference between enumerators and "enumeratees"
>      (i.e., inner pipeline stages).  The former is just a
>      type-restricted version of the latter.
>    * Parsing combinators provide detailed error reporting and support
>      LL(*) rather than LL(1) parsing, leading to fewer non-intuitive
>      parsing failures.  A couple of tricks avoid consuming excessive
>      memory for backtracking.
>    * Super-fast LL(1) parsing is also available through seamless
>      integration with attoparsec.
>    * A universal exception mechanism works across invocations of mtl
>      monad transformers, thereby unifying error handling.
>    * All pipe operators have uniform semantics, eliminating corner
>      cases.  In particular, if the writing end of a pipe fails, the
>      reading end always gets EOF, allowing it to clean up resources.
>    * One can catch exceptions thrown by any contiguous subset of
>      stages in a pipeline.  Moreover, enumerator exception handlers
>      can resume downstream stages that haven't failed.
>    * The package is full of useful iteratees and enumerators,
>      including basic file and socket processing, parsec-like
>      combinators, string search, zlib/gzip compression, SSL, HTTP, and
>      "loopback" enumerator/iteratee pairs for testing a protocol
>      implementation against itself.
> Please enjoy.  I'd love to hear feedback.
> David

1. It looks nice - however it causes problem as we have 3 iteratees
packages, all of which have some advantages. 4 if we count coroutine. (I
don't count original implementations).

2. What is the reason of using Inum/Onum instead of
Iteratee/Enumerator/Enumeratee. The latter seems to be a standard naming
in the community?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110506/bf0a6612/attachment.pgp>

More information about the Haskell-Cafe mailing list