Sun Dec 23 20:12:35 EST 2012

Data structures

IIRC one of the tougher problems was how to implement argument lists
to pass to functions.  For a first-order language this required data
structures, which where implemented as binary trees of scalars.

For structures, there are 2 components:

- primitive data types (implemented by the target language, i.e. C)

- composition mechanism for datastructures in the DSL: binary trees in
  terms of (,) and ()  -> these are picked to support Arrow.

There is also a mechanism for bridging target language's structure
(i.e. C struct) with the DSL.  Essentially this is about commutation
of struct / rep.  It is essential for implementing multi-arg lambda!

Seems that this is the basic point.