pipes-2.4.0: Compositional pipelines

Safe HaskellNone




This module provides an API compatible with Control.Pipe

Consult Control.Pipe.Core for more extensive documentation and Control.Pipe.Tutorial for an extended tutorial.



type Pipe a b = Proxy () a () bSource

The type variables of Pipe a b m r signify:

  • a - The type of input received from upstream pipes
  • b - The type of output delivered to downstream pipes
  • m - The base monad
  • r - The type of the return value

type Producer b = Pipe () bSource

A pipe that produces values

type Consumer a = Pipe a CSource

A pipe that consumes values

type Pipeline = Pipe () CSource

A self-contained pipeline that is ready to be run

Create Pipes

await :: Monad m => Pipe a b m aSource

Wait for input from upstream

await blocks until input is available

yield :: Monad m => b -> Pipe a b m ()Source

Deliver output downstream

yield restores control back downstream and binds the result to await.

pipe :: Monad m => (a -> b) -> Pipe a b m rSource

Convert a pure function into a pipe

Compose Pipes

(<+<) :: Monad m => Pipe b c m r -> Pipe a b m r -> Pipe a c m rSource

Corresponds to (<<<)/(.) from Control.Category

(>+>) :: Monad m => Pipe a b m r -> Pipe b c m r -> Pipe a c m rSource

Corresponds to (>>>) from Control.Category

idP :: Monad m => Pipe a a m rSource

Corresponds to id from Control.Category

Run Pipes

runPipe :: Monad m => Pipeline m r -> m rSource

Run the Pipe monad transformer, converting it back to the base monad