| Portability | non-portable (multi-parameter type classes) | 
|---|---|
| Stability | experimental | 
| Maintainer | ross@soi.city.ac.uk | 
Control.Arrow.Transformer.Automaton
Description
Simple Mealy-style automata.
- newtype Automaton a b c = Automaton (a b (c, Automaton a b c))
 - runAutomaton :: (ArrowLoop a, ArrowApply a) => Automaton a (e, b) c -> a (e, Stream b) (Stream c)
 
Documentation
newtype Automaton a b c Source
An arrow type comprising Mealy-style automata, each step of which is is a computation in the original arrow type.
Instances
| Arrow a => ArrowTransformer Automaton a | |
| ArrowError r a => ArrowError r (Automaton a) | |
| ArrowWriter w a => ArrowWriter w (Automaton a) | |
| ArrowState s a => ArrowState s (Automaton a) | |
| ArrowReader r a => ArrowReader r (Automaton a) | |
| ArrowAddWriter w a a' => ArrowAddWriter w (Automaton a) (Automaton a') | |
| ArrowAddReader r a a' => ArrowAddReader r (Automaton a) (Automaton a') | |
| ArrowAddState r a a' => ArrowAddState r (Automaton a) (Automaton a') | |
| Arrow a => Arrow (Automaton a) | |
| ArrowZero a => ArrowZero (Automaton a) | |
| ArrowPlus a => ArrowPlus (Automaton a) | |
| ArrowChoice a => ArrowChoice (Automaton a) | |
| ArrowLoop a => ArrowLoop (Automaton a) | |
| Arrow a => Category (Automaton a) | |
| ArrowLoop a => ArrowCircuit (Automaton a) | |
| (ArrowLoop a, ArrowApply a) => ArrowAddStream (Automaton a) a | |
| Arrow a => Functor (Automaton a b) | |
| Arrow a => Applicative (Automaton a b) | |
| ArrowPlus a => Alternative (Automaton a b) | |
| ArrowPlus a => Monoid (Automaton a b c) | 
runAutomaton :: (ArrowLoop a, ArrowApply a) => Automaton a (e, b) c -> a (e, Stream b) (Stream c)Source
Encapsulating an automaton by running it on a stream of inputs, obtaining a stream of outputs.
Typical usage in arrow notation:
proc p -> do ... ys <- (|runAutomaton (\x -> ...)|) xs
Here xs refers to the input stream and x to individual
 elements of that stream.  ys is bound to the output stream.