Just realized I'd never really announced a new package I put up recently. Iteratee-stm provides an iteratee interface that uses bounded TChans for communication. This makes it simply to run IO in a separate thread from processing. It's used like this:

result <- forkEnum 2 (enumFile filePath) someIteratee >>= run
otherResult <- enumList myData (forkIter 2 writingIteratee) >>= run

There are a few restrictions on using it (i.e. control messages like `seek` are discarded), but otherwise I've found it can significantly improve throughput.

User reports welcome!
Shared publiclyView activity