Sun Jan 23 23:36:03 EST 2011

Simpler state space syntax

Maybe magic syntax isn't necessary.  Simpler:

(state-space <name>
  [ x1 x2 ] ;; state
  [ i1 i2 ] ;; in
  [ o1 o2 ] ;; out
  ( ...  ;; arbitrary lexical context
       (x1 ...)
       (x2 ...)
       (o1 ...)
       (o2 ...))))

Here `update' needs lexical context introduced by the `state-space'
form to distinguish state updates from outputs.

The arbitrary lexical context is necessary to be able to introduce

Hmm..  The path I went on is tricky.  Some notes:

  - expansion time parameters only work for all-at-once explicit
    transformers.  Once the body of the transformer exits, the
    parameter is out of context.

  - syntax parameters work fine, but their generality makes it
    possible to mess up scoping quite easily.