Sun Dec 23 20:12:35 EST 2012
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.