Fri Oct 28 20:17:10 EDT 2011

Primitive data

Let's try to flesh this out a bit.  It's getting too complicated and
can probably be made a bit simpler.

The root of it all is

  class (Prim t)

which groups all primitive types.  On top of primitive types there are
representations, such as 

  data Code t
  data Value t

which can parameterize the TML and Loop languages, and tupling, such as

  (a, b)

The tupling needs to commute with the representation to make embedding
of lambda abstraction with tuple arguments simpler (possible?).

Compilation needs variable name generation and type projection (for
embedding in a single algebraic data type).

To simplify the current approach, I could try to get rid of the list
gathering, but assume that the underlying expression type can
represent binary trees.