Drafting SRA of expressions.  This requires conversion of said expressions to ANF form first, which also drafting.  This assumes that the decision about which aggregates to replace with scalars has already been made, which, for union-free code, is easy --- replace all of them.  The output language necessarily has multiple-value returns and binds, but the point of the exercise is that all multiple value returns are in tail position.
Drafting SRA of expressions.  This requires conversion of said
expressions to ANF form first, which also drafting.  This assumes that
the decision about which aggregates to replace with scalars has
already been made, which, for union-free code, is easy --- replace all
of them.  The output language necessarily has multiple-value returns
and binds, but the point of the exercise is that all multiple value
returns are in tail position.

axch/dysvunctional-language,axch/dysvunctional-language,axch/dysvunctional-language,axch/dysvunctional-language