
On Feb 17, 2008, at 19:23 , Chad Scherrer wrote:
On Feb 17, 2008 4:13 PM, Brandon S. Allbery KF8NH
wrote: Have you looked at the stream-fusion package on Hackage? http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stream- fusion-0.1.1
Yeah, I've seen this. It's nice that this is separated, but a little unsatisfying that the bytestring library reimplements it rather than just requiring it as a dependency. This, and the fact that bytestrings are way fast, while the stream-fusion stuff is sometimes slower than just using lists, make me think that either (1) there's sometimes an advantage in programming directly to streams, or (2) maybe more of the stream functions need to be exposed in the API. Or maybe there's another reason... that's part of my question.
You should be able to find discussion of this here if you search for "stream fusion". The short version, IIRC, is that (a) this is still an area of active research, with the above lagging behind the current work which is usually in current bytestrings; (b) the spinoff library at times conflicts badly with the existing ghc RULEs for lists, and I think some changes to the way ghc applies RULEs are going to happen at some point in order to ameliorate this. (ghc's current handling of RULEs, inlining, and build/foldr etc. is a bit ad hoc and needs to be given structure so that it is possible to accurately control when and how they are applied. This also has been discussed, either here or on haskell@.) Don Stewart, Duncan Coutts (streams), and Simon Peyton-Jones (ghc) should be able to give details on this stuff, and hopefully one or more of them will jump in to correct any misrecollections or errors I've made. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH