ghc-auto
Denotative, locally stateful programming DSL&platform
(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<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!.
MIT