@@ -0,0 +1,24 @@
4+data Automaton inp out = Automaton (inp -> (out, Automaton inp out))
8+All names and types are up for debate!
11+How to run an automaton (some require typeclasses):
13+run :: Automaton a b -> Signal a -> Signal b
14+run :: OrderedContainer c => Automaton a b -> c a -> c b
15+run :: Functor f => Automaton a b -> f a -> f b
18+compose :: Automaton a b -> Automaton b c -> Automaton a c
19+combine :: [Automaton a b] -> Automaton a [b]
21+init :: b -> (a -> b -> b) -> Automaton a b
22+init' :: s -> (a -> s -> (b,s)) -> Automaton a b