* [ ] Use AccumT for `(w -> m (a, w))` parser: * https://hackage.haskell.org/package/mtl-2.3.1/docs/Control-Monad-Accum.html * [ ] Use StateT for `(s -> m (a, s)) ` parser: * https://hackage.haskell.org/package/mtl-2.3.1/docs/Control-Monad-State-Strict.html#t:State * [ ] Use SelectT for `((a -> m r) -> m a)` selecting: * https://hackage.haskell.org/package/transformers-0.5.6.2/docs/Control-Monad-Trans-Select.html#t:SelectT * [ ] Use ContT for `(a -> m r) -> m r` continuation: * https://hackage.haskell.org/package/transformers-0.5.6.2/docs/Control-Monad-Trans-Cont.html#t:ContT ---- * [ ] Change name `Unit` to `Automaton`
(w -> m (a, w))parser:(s -> m (a, s))parser:((a -> m r) -> m a)selecting:(a -> m r) -> m rcontinuation:UnittoAutomaton