On 05/11/2013 11:04 AM, Michael Snoyman wrote:
It's quite old at this point, but you may be interested in reading the
initial motivations for creating conduit when the iteratee pattern
(and enumerator library in particular) already existed:
https://github.com/snoyberg/conduit/blob/master/README.md#general-goal
I would say the only real component missing from your list is being
able to structure significantly more complicated control flows, such
as the use case of combining a web server and web client into a web
proxy. That was probably the example which finally pushed me to start
thinking seriously about an enumerator replacement. In conduit, this
use case is addressed by connect-and-resume, which essentially allows
you to escape the inversion of control normally introduced by the
conduit pattern.
Speaking of escaping inversion of control, I'm going to take a moment to
shamelessly plug this post of mine showing that you can escape the pipe
monad using a trick uncannily similar to `io-streams`:
http://www.haskellforall.com/2013/04/pipes-and-io-streams.html
It's not equivalent to `conduit`'s connect and resume, though, which is
very different.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe