Research output: Chapter in Book/Report/Conference proceedingConference contribution

21 Citations (Scopus)


Iteratee IO is a style of incremental input processing with precise resource control. The style encourages building input processors from a user-extensible set of primitives by chaining, layering, pairing and other modes of compositions. The programmer is still able, where needed, to precisely control look-ahead, the allocation of buffers, file descriptors and other resources. The style is especially suitable for processing of communication streams, large amount of data, and data undergone several levels of encoding such as pickling, compression, chunking, framing. It has been used for programming high-performance (HTTP) servers and web frameworks, in computational linguistics and financial trading. We exposit programming with iteratees, contrasting them with Lazy IO and the Handle-based, |stdio|-like IO. We relate them to online parser combinators. We introduce a simple implementation as free monads, which lets us formally reason with iteratees. As an example, we validate several equational laws and use them to optimize iteratee programs. The simple implementation helps understand existing implementations of iteratees and derive new ones.

Original languageEnglish
Title of host publicationFunctional and Logic Programming - 11th International Symposium, FLOPS 2012, Proceedings
Number of pages16
Publication statusPublished - 2012 Jun 6
Event11th International Symposium onFunctional and Logic Programming, FLOPS 2012 - Kobe, Japan
Duration: 2012 May 232012 May 25

Publication series

NameLecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
Volume7294 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349


Other11th International Symposium onFunctional and Logic Programming, FLOPS 2012

ASJC Scopus subject areas

  • Theoretical Computer Science
  • Computer Science(all)


Dive into the research topics of 'Iteratees'. Together they form a unique fingerprint.

Cite this