Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Deriving backtracking monad transformers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Abstraction and verification in Alphard: defining and specifying iteration and generators
Communications of the ACM
Fluents: A Refactoring of Prolog for Uniform Reflection an Interoperation with External Objects
CL '00 Proceedings of the First International Conference on Computational Logic
Journal of Functional Programming
Journal of Functional Programming
Combinator Parsing: A Short Tutorial
Language Engineering and Rigorous Software Development
AMAST'06 Proceedings of the 11th international conference on Algebraic Methodology and Software Technology
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Adding structure to monoids: thus hopefully ending Haskell's string type confusion
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
DSL methods for CPS simulation in the cloud: Experience report
Proceedings of International Workshop on Engineering Simulations for Cyber-Physical Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
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.