Wed May 5 14:04:30 EDT 2010

Composition in the low-level rep

The Procedure.hs representation currently uses a recursive type for
PAbs, i.e. a PApp can invoke a PAbs directly.  This might not be a
good idea as we probably just want to represent flat block structure
(one level of abstraction) and use target language name abstractions
(procedures or macros) for composition.

If a generator that produces PAbs structures needs macro expansion, it
should perform expansion in its higher level description.

Next: fix compileNodes such that the register naming is done more
explicitly.  The problem is in compileNodes / envFold

*Main> compileNodes [0..] [var "a", var "a" + 1]
([a,r0],[(r0,(add a 1))])

This probably needs to use the Procedure.hs representation directly,
which would also hide the object equality unsafe property.