Sat Jan 30 08:05:15 CET 2010

Guaranteed tail calls

How to guarantee proper tail calls with a stack model?

(let* ((a ...)
       (b ...))
  (t ...))

Essentially, the space alloted to store the arguments of `t' should be
below the space alloted to store `a' and `b'.  This is the `shift'
opcode in Dybvig's dissertation[1].

Essentially, upon entry of a function one should allocate necessary
space to perform argument passing to the next function.

[1] http://www.cs.unm.edu/~williams/cs491/three-imp.pdf