Copyright | (C) 2012 Edward Kmett Rúnar Bjarnason Paul Chiusano |
---|---|

License | BSD-style (see the file LICENSE) |

Maintainer | Edward Kmett <ekmett@gmail.com> |

Stability | provisional |

Portability | Rank-2 Types, GADTs |

Safe Haskell | Safe-Inferred |

Language | Haskell2010 |

## Synopsis

- type Wye a b c = Machine (Y a b) c
- type WyeT m a b c = MachineT m (Y a b) c
- data Y a b c where
- wye :: Monad m => ProcessT m a a' -> ProcessT m b b' -> WyeT m a' b' c -> WyeT m a b c
- addX :: Monad m => ProcessT m a b -> WyeT m b c d -> WyeT m a c d
- addY :: Monad m => ProcessT m b c -> WyeT m a c d -> WyeT m a b d
- capX :: Monad m => SourceT m a -> WyeT m a b c -> ProcessT m b c
- capY :: Monad m => SourceT m b -> WyeT m a b c -> ProcessT m a c
- capWye :: Monad m => SourceT m a -> SourceT m b -> WyeT m a b c -> SourceT m c

# Wyes

type Wye a b c = Machine (Y a b) c Source #

A `Machine`

that can read from two input stream in a non-deterministic manner.

type WyeT m a b c = MachineT m (Y a b) c Source #

A `Machine`

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

addX :: Monad m => ProcessT m a b -> WyeT m b c d -> WyeT m a c d Source #

Precompose a pipe onto the left input of a wye.

addY :: Monad m => ProcessT m b c -> WyeT m a c d -> WyeT m a b d Source #

Precompose a pipe onto the right input of a wye.

capX :: Monad m => SourceT m a -> WyeT m a b c -> ProcessT m b c Source #

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