Great work as usual John. I'm actually very happy to see enumHandleRange: the next version of WAI will support partial files, and I just implemented my own version of enumHandleRange over there. I will gladly switch to your (most likely more correct) version.
As far as the left-over data in a yield issue: does that require a breaking API change, or a change to the definition of >>= which would change semantics?? Michael On Sat, Mar 26, 2011 at 7:39 AM, John Millikin <jmilli...@gmail.com> wrote: > ----------------------------------------------------------------------------------------------------------------------------------------------------- > Enumerators are an efficient, predictable, and safe alternative to > lazy I/O. Discovered by Oleg Kiselyov, they allow large datasets to be > processed in near–constant space by pure code. Although somewhat more > complex to write, using enumerators instead of lazy I/O produces more > correct programs. > > http://hackage.haskell.org/package/enumerator > http://john-millikin.com/software/enumerator/ > ----------------------------------------------------------------------------------------------------------------------------------------------------- > > Hello -cafe, > > It's been a while since the last point release of enumerator. This one > is sufficiently large that I think folks might want to know about it, > and since I try not to spam too many announcements, I'll give a quick > rundown on major changes in other 0.4.x versions as well. > > First, most of what I call "list analogues" -- enumerator-based > versions of 'head', 'take', 'map', etc -- have been separated into > three modules (Data.Enumerator.List, .Binary, and .Text) depending on > what sorts of data they operate on. This separation has been an > ongoing process throughout 0.4.x releases, and I think it's now > complete. The old names in Data.Enumerator will continue to exist in > 0.4.x versions, but will be removed in 0.5. > > Second, Gregory Collins and Ertugrul Soeylemez found a space leak in > Iteratee's (>>=), which could cause eventual space exhaustion in some > circumstances. If you use enumerators to process very large or > infinite streams, you probably want to upgrade to version 0.4.7 or > higher. > > Third, the source code PDF has seen some substantial improvement -- if > you're interested in how the library is implemented, or have insomnia, > read it at < http://john-millikin.com/software/enumerator/enumerator_0.4.8.pdf >> > > Finally, there is a known issue in the current encoding of iteratees > -- if an iteratee yields extra data but never consumed anything, that > iteratee will violate the monad law of associativity. Oleg has updated > his implementations to fix this problem, but since it would break a > *lot* of dependent libraries, I'm holding off until the vague future > of version 0.5. Since iteratees that yield extra data they didn't > consume are invalid anyway, I hope this problem will not cause too > much inconvenience. > > New features > ----------------- > > * Range-limited binary file enumeration (requested + initial patch by > Bardur Arantsson). > > * splitWhen , based on the "split" package < > http://hackage.haskell.org/package/split > > > * 0.4.6: Typeable instances for most types (requested by Michael Snoyman) > > * 0.4.5: joinE , which simplifies enumerator/enumeratee composition > (requested by Michael Snoyman) > > _______________________________________________ > Libraries mailing list > librar...@haskell.org > http://www.haskell.org/mailman/listinfo/libraries > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe