Module documentation for 2.9.0

Elerea (Eventless reactivity) is a tiny discrete time FRP
implementation without the notion of event-based switching and
sampling, with first-class signals (time-varying values). Reactivity
is provided through various higher-order constructs that also allow
the user to work with arbitrary time-varying structures containing
live signals. Signals have precise and simple denotational
semantics.

Stateful signals can be safely generated at any time through a
monadic interface, while stateless combinators can be used in a
purely applicative style. Elerea signals can be defined recursively,
and external input is trivial to attach. The library comes in two
major variants:

This is a minimal library that defines only some basic primitives,
and you are advised to install elerea-examples as well to get an
idea how to build non-trivial systems with it. The examples are
separated in order to minimise the dependencies of the core library.
The dow package contains a full game built on top of the simple
variant.

Changes

2.9.0 - 160618* removed clocked variant, as it proved to be impractical* renamed external to unsafeExternal* introduced safe (managed) external signals* renamed until to till to avoid name clash with the prelude

2.5.0 - 111122* added SignalGen liftIO equivalent to assist library writers* simplified the signatures of effectful* combinators* updated Param to use the more modern codebase (like Simple and Clocked); this was necessary to support effectful signals* temporarily removed the static optimisation from Param* removed dependency on mersenne-random* removed legacy branch

2.4.0 - 111111* added effectful signals to assist library writers

2.3.0 - 110627* reimplemented clocked variant in a correct and more efficient way

2.1.0 - 100805* reimplemented the parametric variant in a way that doesn't require signals to carry the type of the parameter any more* added the ability to extract the global input in the parametric variant, and also to override it (input and embed, resp.)* added until to be able to define switchers that can truly drop references to old signals* added debug printing capability to the simple and clocked variants* made a note about possibly deprecating the delayed variant

2.0.0 - 100718* moved experimental branch to the top (version 1 went into legacy status)* added the clocked variant

1.2.3 - 100131* added externalMulti to handle events that can fire several times within a superstep* added a cache to the noise signal for safety reasons, so it lives in SignalGen now