auto-0.4.3.0: 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 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!
- Control
- Control.Auto Main entry point to the auto library.
- Control.Auto.Blip Tools for generating and manipulating blip streams.
- Control.Auto.Blip.Internal Exposing internal unsafe functions for working with
Blip
.
- Control.Auto.Blip.Internal Exposing internal unsafe functions for working with
- Control.Auto.Collection
Auto
s that represent collections ofAuto
s that can be run in parallel, multiplexed, gathered... - Control.Auto.Core Core types, constructors, and utilities.
- Control.Auto.Effects Accessing, executing, and manipulating underyling monadic effects.
- Control.Auto.Generate
Auto
s that act as generators or "producers", ignoring input. - Control.Auto.Interval Tools for working with "interval" semantics: "On or off"
Auto
s. - Control.Auto.Process
Auto
s useful for various commonly occurring processes.- Control.Auto.Process.Random Entropy generationg
Auto
s.
- Control.Auto.Process.Random Entropy generationg
- Control.Auto.Run Various utilities for running and unrolling
Auto
s, both interactively and non-interactively. - Control.Auto.Serialize Serializing and deserializing
Auto
s to and from disk, and alsoAuto
transformers focused around serialization. - Control.Auto.Switch Combinators for dynamically switching between and
sequencing
Auto
s. - Control.Auto.Time
Auto
s andAuto
transformers for observing and manipulating the flow of "time".
- Control.Auto.Blip Tools for generating and manipulating blip streams.
- Control.Auto Main entry point to the auto library.