| Maintainer | gatlin@niltag.net | 
|---|---|
| Stability | experimental | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
Tubes
Description
My interest in stream processing was re-ignited by the excellent project
https://github.com/iokasimov/pipeline
Pipeline casts the Pipes / Conduit-style of programming in terms of CPS.
Since I have my own special CPS I have plagiarized Pipeline's approach.
My goal is to determine how this relates to Orc and then have one module
subsume the other (or learn a valuable reason for why not).
Synopsis
- type Series i o t a r = CPS r (Tube i o r t) a
 - deliver :: Monad t => Series i o t r r -> t r
 - yield :: o -> Series i o t () r
 - await :: Series i o t i r
 - finish :: Monad t => Series i o t () ()
 - embed :: Monad t => t a -> Series i o t a ()
 - type Generator t o = Series Void o t () ()
 - type Async t i = Series i Void t () ()
 - type AsyncGenerator t i o = Series i o t () ()
 - (><) :: forall i e a o t. Monad t => Series i e t () () -> Series e o t () () -> Series i o t a ()
 - newtype Tube i o r t a = Tube {}
 - newtype Source i t r = Source {}
 - newtype Sink o t r = Sink {}
 - pause :: (() -> Tube i o r t a) -> Source i t r -> Source o t r
 - suspend :: (i -> Tube i o r t a) -> Sink o t r -> Sink i t r
 
A series of tubes
Construction and evaluation
deliver :: Monad t => Series i o t r r -> t r Source #
"...deliver[s] vast amounts of information" from a Series of tubes. :)
embed :: Monad t => t a -> Series i o t a () Source #
Embeds a value with side effects into an appropriate Series.
type AsyncGenerator t i o = Series i o t () () Source #
Combination
(><) :: forall i e a o t. Monad t => Series i e t () () -> Series e o t () () -> Series i o t a () Source #
Utility
The head of a stream processing series.
The reservoir at the end of a stream processing pipeline.