pipes: Compositional pipelines
|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, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.3.6, 4.3.7, 4.3.8, 4.3.9|
|Dependencies||base (==4.*), index‑core, transformers, transformers‑free, void [details]|
|Copyright||2012 Gabriel Gonzalez|
|Revised||Revision 1 made by phadej at Tue May 31 13:43:58 UTC 2016|
|Source repo||head: git clone https://github.com/Gabriel439/Haskell-Pipes-Library|
|Uploaded||by GabrielGonzalez at Wed Sep 5 21:18:56 UTC 2012|
|Distributions||Arch:4.3.9, Debian:4.1.7, Fedora:4.3.7, LTSHaskell:4.3.9, NixOS:4.3.9, Stackage:4.3.9, openSUSE:4.3.8|
|Downloads||46510 total (528 in the last 30 days)|
|Rating||2.75 (votes: 9) [estimated by rule of succession]|
|Status||Docs available [build log]
Last success reported on 2016-06-04 [all 1 reports]
Hackage Matrix CI
"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 (
yield), and only one way to compose
.). In fact, this library implements its entire behavior using its
Categoryinstances and enforces their laws strictly!
Clearer naming conventions: Enumeratees are called
Pipes, Enumerators are
Producers, and Iteratees are
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: (
Pipes, but since everything is a
Pipe, you can use it to concatenate
Consumers, and even intermediate
Pipestages. Vertical Concatenation always works the way you expect, picking up where the previous
Bidirectionality: The library now provides a bidirectional
Pipetype, called a
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
and Control.Proxy provides the implementation.
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees