[Haskell-cafe] Conduit experiment: Is this correct?

Erik de Castro Lopo mle+hs at mega-nerd.com
Fri Feb 3 22:19:41 CET 2012


Ertugrul Söylemez wrote:

> Thanks a lot.  This conduit world is really new to me and feels a bit
> more complicated than enumerators, but at least I seem to be getting the
> right intuition.

I can assure you that while this may be true for simple cases, it most
definitely is not true for at least one more complex case.

I have a hackage package http-proxy which initially used Enumerator and
now uses Conduit. The Enumerator version was extremely difficult to figure
out and eventually required a function like this:

    enumIteratee :: MonadIO m => Int64
                 -> (Int -> Iteratee ByteString m ByteString)
                 -> Enumerator ByteString (Iteratee ByteString m) c

with an Iteratee nested inside an Enumerator.

The Conduit version was much easier to put together because conduits seem
to compose much more naturally. IMO, Conduit is a significant improvement
over Enumerator but a better solution may still exist (I'm interested in
seeing how Pipes work out).

Cheers,
Erik
-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/



More information about the Haskell-Cafe mailing list