Wed Apr 29 19:07:44 CEST 2009

ops and op matching

This is a tough one.. What I'm really trying to do is to:

  * Check syntax of pattern matching at compile time.  This is
    currently only existence of op + arity.

  * Implement matching at run-time (using tagging).

  * Associate the op instance with semantics.  (avoid symbolic lookup
    / interpretation here).

I'm currently confusing tags with implementation instances: it is
possible to have an instance (a tagged list) without associated
semantics, or to have multiple instances of the same type (op) with
different semantics.

So basicly

   * _matching_ should just check the symbol, not the semantics.
     since we're taking the instruction apart, we really don't care
     about what it would do if it were still there.

   * _construction_ needs associated semantics

So matching needs:
   * compile time data
   * type predicate

Construction needs:
   * compile time data
   * constructor

This allows the insertion of operations that are not known except for
the local scope, but will properly assemble to machine code.

That's good.

Let's use (op <name> info) and (op <name> predicate).