Ok, I think, I made it right now. I wrote two versions of the very same
module with roughly the same interface. It is minimalistic framework for
producing, transforming, zipping and folding streaming data (a sample
code that does file IO provided, but it is not well tested yet). One
version abuses CPS-style, requires rank2types, but should be slightly
faster and has cleaner code. Other version is plain haskell-98 and
should be reasonable portable, but is tricky at some plases and still
uses CPS for specifing stream processors. I want to add many things, but
currently I want to document code properly so it be easy to read (BTW,
has someone any article, produced from *.lhs with good typesetting and
with *.lhs itself avaible? )
current links
https://github.com/permeakra/Rank2Iterateehttps://github.com/permeakra/PassiveIteratee
The main difference from 'original' iteratees I read about is that both
do not use 'chunks' and pass data one-by-one. So, what I wrote may be
slower, but should be easier to maintain and more transparent for ghc
optimising facilities. I wanted as clean and simple code as possible,
but it is still very, very messy at some places and I want it cleaner.
Any suggestions? I also want to check, how good ghc does its work with
this messy modules. They may become interesting benchmarks.