Thu Apr 11 11:19:57 EDT 2013
Type system thoughts + array language
The ai-array.rkt language should produce only array accesses in its
output language (phase 2, before C generation).
The C generation step should be "dumb". All low-level mapping should
be done in phase 2.
1: Convert abstract syntax to type-annotated t-lambda form. This is a
functional form with stream semantics. All primitive operations
operate on streams, though some nodes are defined as "phase 0" meaning
only computed at t=0.
2. Convert t-lambda form to imperative block language. Maps all types
to arrays and places all lifted operations inside loops over explicit
3. Convert to C (dumb).
Concerning delay lines: Level 1 output has SSA bindings for whole
delay line structures while level 2 output has in-place update for one
sample value only. The idea is to keep that SSA semantics. The
assignment of an array element is still semantically a one-time
binding (cut off old, cons on new).