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.

The pasees:

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
time/space indices.

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).