Proposal: Add concatMapM function (#2042)

Johan Tibell johan.tibell at gmail.com
Fri Feb 1 06:08:26 EST 2008


> Right now though, I'm not sure all this is going in the right direction.
> Dealing with all those mutable buffers is quite a headache (for the library
> writer, not the user), and lazy bytestrings have shown us that there are
> simpler ways to get good I/O performance.  What's more, as Duncan Coutts
> has pointed out to me on more than one occasion, it's much easier to layer
> streams when the streams are lazy lists.  As much as I hate to say it,
> there's a lot to be said for lazy I/O in this respect.  However, lazy I/O
> has other problems - deterministically catching errors, unpredictable
> resource usage, unpredictable interaction with other I/O, and so on.  Is
> there a nice solution?  Something else we might look at is Oleg's left folds:
>
> http://okmij.org/ftp/Haskell/#fold-stream
> http://www.haskell.org/pipermail/haskell/2003-September/012741.html

I initially used lazy I/O with lazy bytestrings in my web server but
I'm changing that behvior to use left folds instead precisely because
of the reasons you (and Oleg) mentioned. Unfortunately, that means I
need a incremental Parsec for bytestrings (I think) so there's yet
another library to write. Oh well. :)

-- Johan


More information about the Libraries mailing list