Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

87 lines (78 sloc) 2.848 kb
name: pipes
version: 1.2
synopsis: Compositional pipelines.
license: BSD3
license-file: LICENSE
author: Gabriel Gonzalez
maintainer: Gabriel439@gmail.com
copyright: 2012 Gabriel Gonzalez
stability: Experimental
category: Control, Enumerator
cabal-version: >= 1.10
build-type: Simple
description:
\"Iteratees done right\". This library implements
iteratees\/enumerators\/enumeratees simply and elegantly, but uses 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 'Pipe's ('.'). In fact,
this library introduces no new operators, using only its 'Monad' and
'Category' instances to implement all behavior.
.
* /Clearer naming conventions/: Enumeratees are called 'Pipe's, Enumerators
are 'Producer's, and Iteratees are 'Consumer's. 'Producer's and
'Consumer's are just type synonyms for 'Pipe's 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 'Pipe's, but since everything is a 'Pipe', you can use it to
concatenate 'Producer's, 'Consumer's, and even intermediate 'Pipe' stages.
Vertical Concatenation always works the way you expect, picking up where
the previous 'Pipe' left off.
.
Check out "Control.Pipe" for a copious introduction (in the spirit of the
@iterIO@ library) and "Control.Pipe.Common" for the actual implementation.
.
Convenience 'Pipe's for common operations can be found in
"Control.Pipe.List". 'Pipe's for dealing with binary data can be found in
"Control.Pipe.Binary" and "Control.Pipe.Binary.IO". 'Pipe's for dealing with
text data can be found in "Control.Binary.Text",
"Control.Binary.Text.IO" and "Control.Binary.Text.Encoding".
library
hs-source-dirs:
src
exposed-modules:
Control.Pipe,
Control.Pipe.Binary,
Control.Pipe.Binary.IO,
Control.Pipe.Common,
Control.Pipe.List,
Control.Pipe.Text,
Control.Pipe.Text.Encoding,
Control.Pipe.Text.IO
build-depends:
base >= 4 && < 5,
bytestring,
containers,
free,
monad-control,
monad-exception,
mtl,
resource-simple >= 0.2 && < 0.3,
text,
transformers,
transformers-base
default-language:
Haskell2010
source-repository head
type: git
location: git://github.com/duairc/pipes.git
Jump to Line
Something went wrong with that request. Please try again.