The enumerator package

[Tags:deprecated, library, mit]
Deprecated.

Typical buffer–based incremental I/O is based around a single loop, which reads data from some source (such as a socket or file), transforms it, and generates one or more outputs (such as a line count, HTTP responses, or modified file). Although efficient and safe, these loops are all single–purpose; it is difficult or impossible to compose buffer–based processing loops.

Haskell’s concept of “lazy I/O” allows pure code to operate on data from an external source. However, lazy I/O has several shortcomings. Most notably, resources such as memory and file handles can be retained for arbitrarily long periods of time, causing unpredictable performance and error conditions.

Enumerators are an efficient, predictable, and safe alternative to lazy I/O. Discovered by Oleg Kiselyov, they allow large datasets to be processed in near–constant space by pure code. Although somewhat more complex to write, using enumerators instead of lazy I/O produces more correct programs.

This library contains an enumerator implementation for Haskell, designed to be both simple and efficient. Three core types are defined, along with numerous helper functions:


[Skip to Readme]

Properties

Versions 0.1, 0.1.1, 0.2, 0.2.1, 0.3, 0.3.0.1, 0.4, 0.4.0.1, 0.4.0.2, 0.4.1, 0.4.2, 0.4.3, 0.4.3.1, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.8, 0.4.9, 0.4.9.1, 0.4.10, 0.4.11, 0.4.12, 0.4.13, 0.4.13.1, 0.4.14, 0.4.15, 0.4.16, 0.4.17, 0.4.18, 0.4.19, 0.4.20
Dependencies base (>=3 && <5), bytestring (==0.9.*), containers, extensible-exceptions (==0.1.*), text (>=0.7 && <0.12), transformers (==0.2.*) [details]
License MIT
Copyright Copyright (c) John Millikin 2010
Author John Millikin <jmillikin@gmail.com>
Maintainer jmillikin@gmail.com
Stability experimental
Category Data, Enumerator
Home page http://john-millikin.com/software/enumerator/
Bug tracker mailto:jmillikin@gmail.com
Source repository head: bzr branch http://john-millikin.com/software/enumerator/
Uploaded Mon Jul 11 04:21:41 UTC 2011 by JohnMillikin
Distributions Debian:0.4.20, Fedora:0.4.20, FreeBSD:0.4.20, LTSHaskell:0.4.20, NixOS:0.4.20
Downloads 34961 total (108 in the last 30 days)
Votes
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for enumerator

Readme for enumerator-0.4.11

The source code for "enumerator" is literate. To build the library from scratch,
install the "anansi" application and then run:

    anansi -o hs/ src/enumerator.anansi

To generate the woven PDF, install NoWeb and then run:

    anansi -w -l latex-noweb -o enumerator.tex src/enumerator.anansi
    xelatex enumerator.tex
    xelatex enumerator.tex