Proposal: Add concatMapM function (#2042)

Simon Marlow simonmarhaskell at gmail.com
Fri Feb 1 05:31:37 EST 2008


Bayley, Alistair wrote:
>> From: libraries-bounces at haskell.org 
>> [mailto:libraries-bounces at haskell.org] On Behalf Of Ketil Malde
>>
>> Somebody raised the question of reading a Content-type field, etc:
>> would it be possible to "rewind" a handle after setting encoding?  For
>> Content-type fields, I suspect the header is usually limited to ASCII
>> anyway, so adding decoding for subsequent text is probably
>> sufficient.
> 
> 
> I think this is relevant:
>  
> http://www.haskell.org/pipermail/haskell-cafe/2004-September/006801.html

We've talked a lot in the past about a stream-layering IO abstraction. 
I'd forgotten about Oleg's post, thanks.

Here are some others.  There's the prototype I worked on:

http://www.haskell.org/~simonmar/io/System.IO.html

There's Bulat's Stream library, which is pretty complete:

http://haskell.org/haskellwiki/Library/Streams

And Takano Akio's version, in which he divides the type classes into 
smaller pieces.  This is closer to the direction I thought we should go:

http://yogimo.sakura.ne.jp/ssc/

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

Cheers,
	Simon



More information about the Libraries mailing list