I believe this shows a bug in letrec:

guile> (let ((x 1)) (let ((x 32) (y x)) y))
1
guile> (let ((x 1)) (letrec ((x 32) (y x)) y))

Backtrace:
In standard input:
   2: 0* (let* ((x 1)) (letrec ((x 32) (y x)) y))
   2: 1  (letrec ((x 32) (y x)) y)

standard input:2:14: In expression (letrec (# #) y):
standard input:2:14: Variable used before given a value: x
ABORT: (unbound-variable)




Reply via email to