[gambit-list] letrec in the interpreter
Marc Feeley
feeley at iro.umontreal.ca
Fri Sep 30 18:12:33 EDT 2005
On 30-Sep-05, at 6:02 PM, Christian wrote:
> Hello
>
> I've noticed a discrepancy between the interpreter and the compiler:
> in both of these cases:
>
> (define (run n)
> (letrec
> ((x (+ n 1))
> (y (+ x x)))
> (display y)
> (newline)))
>
> (define (run n)
> (define x (+ n 1))
> (define y (+ x x))
> (display y)
> (newline))
>
In Scheme the above code is illegal. However, the compiler is more
permissive than the interpreter so it does not detect the error (it
sorts the bindings according to the variable dependencies so that the
binding on y is performed after binding x). Moral: use the
interpreter to debug your code before you compile it!
Marc
More information about the Gambit-list
mailing list