On 22 feb 2008, at 08.18, Jules Bean wrote:
Thomas Schilling wrote:
On 21 feb 2008, at 18.35, Johan Tibell wrote:
I switched from lazy bytestrings to a left fold in my networking
code
after reading what Oleg wrote about streams vs folds. No problems
with
handles, etc. anymore.
Do you fold over chunks? Can you continue to use Parsek or other
utilities that need a stream-abstraction, and if so, how do you
handle the end of a chunk. This is the kind of callback interface
where lazy evaluation really abstracts things nicely.
You can't call a stream-abstraction utility using a left-fold-
enumerator without cheating (unsafeInterleave), because the stream-
abstraction is incompatible (and leaky! even though it is convenient).
You can convert in the other direction fine.
Chunk are no problem, and convertible: you can build an element
fold from a chunk fold, and a chunk fold from an element fold (as
long as there is an 'end-of-input' marker).
Hm, thinking about it, parsers just need to be able to return a
continuation instead of fail at the end of the input. This
continuation can then be invoked with the next chunk as input.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe