auto
(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 the tutorial
directory, and also incidentally online at
https://github.com/mstksg/auto/blob/master/tutorial/tutorial.md.
Also, check out the
auto-examples
repository on github for plenty of real-world and toy
examples to learn from; I've also done a
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!