[Haskell-cafe] TCP Server

Felipe Almeida Lessa felipe.lessa at gmail.com
Sat Jan 28 12:56:11 CET 2012


On Sat, Jan 28, 2012 at 9:40 AM, Yves Parès <yves.pares at gmail.com> wrote:
>> I think there is still no consensus on which iteratee library is the one
>> to use. There are at least iteratee, enumerator, iterIO, conduit, and
>> pipes. The reusability of your libary depends on the choice of
>> iteratee-style library you select.
>
> Yes, and IMO this is a growing problem. Since iteratees were designed, a lot
> of different libraries providing this kind of service have appeared.
> Of course they all have advantages and inconvenients, but some libraries
> that could be compatible are not, because they rely on a different
> iteratee-ish package. For instance pipes (as its documentation states) is
> really like iteratee... but with more concrete names. Still it's sufficient
> to break compatibility.
>
> Or else, we have to make sure that each one (iteratee, enumerator, conduit,
> pipes...) has its own set of associated packages and that each provide
> equivalent functionalities, but then => combinatorial explosion.

I find it funny that conduit is said to be an iteratee library since
it has no iteratees!  We've had more than one iteratee library since
at least 1.5 years with the iteratee (Mar 2009) and enumerator (Aug
2010) packages, and AFAIK now we have four iteratee libraries: those
two, iterIO (May 2011) and pipes (Jan 2012).  However, conduit is not
the fifth since it has no iteratees, no enumerators, no enumeratees...
it's a different concept, not a different implementation.

In principle it's possible to have some code that converts functions
between these different iteratee packages -- at least between
iteratee, enumerator and iterIO since these seem to have more or less
the same implementation ideas.  Converting from pipes may be possible,
but to pipes seems pretty difficult since pipes sweeps IO under the
rug.

Cheers,

-- 
Felipe.



More information about the Haskell-Cafe mailing list