Sat Sep 20 00:39:38 CEST 2008

static assembler

Let's see what is necessary to get some static analysis going.  Before
any compile time analysis can be added, the assembler needs to be
moved to static names.

One remark: if the assembler becomes static, it's straightforward to
convert it to concatenative code.

There are 2 uses for assembly instructions:

  * as data structure supporting pattern matching and construction.
  * as reducable expression

A pseudo instruction is non-reducable, and serves only as a
data-intermediate.  Assembly requires the association of the data
structure to a reducer.

Let's make all assembler structs carry a pointer to a reducer, and let
them derive from an abstract assembler opcode which has only a
reducer.  Make sure the pattern matching form ignores the reducer when
matching, and provide a constructor that creates a proper reducer

NEXT: create a macro for this.. requires access to the lowlevel
version of define-struct