machines-0.4.1: Networked stream transducers

Copyright(C) 2012 Edward Kmett, Rúnar Bjarnason, Paul Chiusano
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
PortabilityRank-2 Types, GADTs
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Machine.Tee

Contents

Description

 

Synopsis

Tees

type Tee a b c = Machine (T a b) c Source

A Machine that can read from two input stream in a deterministic manner.

type TeeT m a b c = MachineT m (T a b) c Source

A Machine that can read from two input stream in a deterministic manner with monadic side-effects.

data T a b c where Source

The input descriptor for a Tee or TeeT

Constructors

L :: T a b a 
R :: T a b b 

tee :: Monad m => ProcessT m a a' -> ProcessT m b b' -> TeeT m a' b' c -> TeeT m a b c Source

Compose a pair of pipes onto the front of a Tee.

addL :: Monad m => ProcessT m a b -> TeeT m b c d -> TeeT m a c d Source

Precompose a pipe onto the left input of a tee.

addR :: Monad m => ProcessT m b c -> TeeT m a c d -> TeeT m a b d Source

Precompose a pipe onto the right input of a tee.

capL :: Monad m => SourceT m a -> TeeT m a b c -> ProcessT m b c Source

Tie off one input of a tee by connecting it to a known source.

capR :: Monad m => SourceT m b -> TeeT m a b c -> ProcessT m a c Source

Tie off one input of a tee by connecting it to a known source.

zipWithT :: Monad m => (a -> b -> c) -> PlanT (T a b) c m () Source

wait for both the left and the right sides of a T and then merge them with f.