[racket-dev] the stepper and changes to the expansion of letrec

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sat Jul 9 19:00:05 EDT 2011

At Sat, 9 Jul 2011 11:43:14 -0700, John Clements wrote:
> The expansion of letrec has changed substantially; for instance, a letrec such 
> as 
> (letrec ([a 3] [b (lambda () (b))] [c 4]) (+ a (b) c))
> ... now expands into three nested forms. This is going to require some fairly 
> interesting changes to the stepper.  First, though, some questions:
> 1) are the definitions ever re-ordered in the process of splitting? It looks 
> like the answer is 'no', but it's hard to guess.
> 2) are unused definitions ever removed? Again, it looks like the answer is 
> 'no', but I can't be sure.

No in both cases, but I think it's best to have the teaching languages
use the old expansion instead of the new internal-definition expansion.
I'll push that change.

Posted on the dev mailing list.