(Up to date documentation is maintained at <https://mstksg.github.com/auto>)
Read the README first! <https://github.com/mstksg/auto/blob/master/README.md> ,
for motivating examples, and concrete explanations of things described here.
/auto/ is a Haskell DSL and platform providing declarative, compositional,
denotative semantics for discrete-step, locally stateful, interactive programs,
games, and automations, with implicitly derived serialization. It is suited for
any domain where either the input or the output can be described as a stream of
values: a stream of input events, output views, etc.
/auto/ works by providing a type that encapsulates "value stream transformers",
or locally stateful functions; by specifying your program as a (potentially
cyclic) graph of relationships between value streams, you create a way of
"declaring" a system based simply on static relationships between quantities.
Instead of a "state monad" type solution, where all functions have access to a
rigid global state, /auto/ works by specifying relationships which each exist
independently and on their own, without any global state.
A more fuller exposition is in the
README.md, in this project directory and
also online at <https://github.com/mstksg/auto/blob/master/README.md>; you can
get started by reading the tutorial, which is also in this project directory in
tutorial directory, and also incidentally online at
Also, check out the <https://github.com/mstksg/auto-examples auto-examples>
repository on github for plenty of real-world and toy examples to learn from;
I've also done a <http://blog.jle.im/entries/series/+all-about-auto blog
series> on this library, with examples and full tutorials!
Support available on freenode's #haskell-auto, #haskell-game, and also on the
github issue tracker for the source repository.
Import "Control.Auto" to begin!.