Maintainer | gatlin@niltag.net |
---|---|
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
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.