2008/10/28 Mikael Djurfeldt <[EMAIL PROTECTED]>:
> 2008/10/28 Bill Schottstaedt <[EMAIL PROTECTED]>:
>> 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)
>
> Nope.
>
> From R5RS:
>
> "One restriction on `letrec' is very important: it must be possible
> to evaluate each <init> without assigning or referring to the
> value of any <variable>."

Sorry.  I missed the surrounding let.  Yes, it is a bug.


Reply via email to