Sun Jul 19 14:23:52 EDT 2015

Revisit after RAI implementation

An attempt to write out the core of RAI as Haskell combinators, to
see them in isolation and to see how they compose/commute.

In the current racket implementation, most of these topics are
inside the exploratory big ball of mud.  It's nice to have
something that produces working C code, but it's probably a good
time now to formalize - 2015/07/19.

* composition of state machines with state type 'accumulation'.
See http://zwizwa.be/darcs/meta/dspm :

The base abstraction is simple, but it misses a good link to Arrow.
TODO: formalize the "flattening" or "erasing" operation.

* introduction of block-rate and other sample rate up/down conversion
* spatial operations (essentially feldspar)
TODO: this is likely just commutation of fold and map.

* abstraction of data primitives (with control being fixed).
The current approach (dspm/Data.hs) had this part fixed in a