The pipes package
"Iteratees done right". This library implements iteratees/enumerators/enumeratees simply and elegantly, using different naming conventions.
Advantages over traditional iteratee implementations:
Simpler semantics: There is only one data type (Pipe), two primitives (await and yield), and only one way to compose Pipes (.). In fact, this library implements its entire behavior using its Monad and Category instances and enforces their laws strictly!
Clearer naming conventions: Enumeratees are called Pipes, Enumerators are Producers, and Iteratees are Consumers. Producers and Consumers are just type synonyms for Pipes with either the input or output end closed.
Pipes are Categories: You compose them using ordinary composition.
Intuitive: Pipe composition is easier to reason about because it is a true Category. Composition works seamlessly and you don't have to worry about restarting iteratees, feeding new input, etc. "It just works".
"Vertical" concatenation works flawlessly on everything: (>>) concatenates Pipes, but since everything is a Pipe, you can use it to concatenate Producers, Consumers, and even intermediate Pipe stages. Vertical Concatenation always works the way you expect, picking up where the previous Pipe left off.
Bidirectionality: The library now provides a bidirectional Pipe type, called a Proxy.
Check out Control.Pipe.Tutorial for a copious introductory tutorial and Control.Pipe for the actual implementation. Control.Proxy.Tutorial introduces bidirectional iteratees that are backwards-compatible with Pipes and Control.Proxy provides the implementation.
|Versions||1.0, 1.0.1, 1.0.2, 2.0.0, 2.1.0, 2.2.0, 2.3.0, 2.4.0, 2.5.0, 3.0.0, 3.1.0, 3.2.0, 3.3.0, 4.0.0, 4.0.1, 4.0.2, 4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.1.4, 4.1.5, 4.1.6, 4.1.7, 4.1.8, 4.1.9, 4.2.0, 4.3.0, 4.3.1|
|Dependencies||base (==4.*), index-core, transformers, transformers-free, void [details]|
|Copyright||2012 Gabriel Gonzalez|
|Source repository||head: git clone https://github.com/Gabriel439/Haskell-Pipes-Library|
|Uploaded||Wed Sep 5 21:18:56 UTC 2012 by GabrielGonzalez|
|Updated||Tue May 31 13:43:58 UTC 2016 by phadej to revision 1|
|Distributions||Arch:4.2.0, Debian:4.1.7, Fedora:4.2.0, LTSHaskell:4.1.9, NixOS:4.2.0, Stackage:4.2.0, Tumbleweed:4.1.9|
|Downloads||19821 total (344 in the last 30 days)|
|Status||Docs available [build log]
Last success reported on 2016-06-04 [all 1 reports]
For package maintainers and hackage trustees