[r6rs-discuss] [Formal] eliminate library export immutability loophole
 
On Tue, 20 Mar 2007, Abdulaziz Ghuloum wrote:
> On Mar 19, 2007, at 11:42 AM, AndrevanTonder wrote:
>> 
>> Doesn't the example violate the LETREC* restriction, though?
>> 
>>   One restriction on letrec* is very important: it must be possible to 
>> evaluate
>>   each <init> without assigning or referring to the value the 
>> corresponding
>>   <variable> or the <variable> of any of the bindings that follow it in
>>   <bindings>.
>> 
>> In particular, the second time the RHS of the (define x ....) binding is
>> evaluated, you are actually referring (via the (cadr x) in set-y!) to the
>> value of x itself.  So the example may already be illegal.
>
> The program does not violate the letrec* restriction since in the second 
> time,
> the value of x has already been determined (the first time around).  The 
> program
> never refers or assigns to any uninitialized bindings.
That is not what the letrec* restriction says.  The letrec* restriction quoted 
above says nothing about whether the binding is uninitialized.  The <undefined> 
implementation strategy is mentioned only later, where it is called 
approximate.
Andre
Received on Tue Mar 20 2007 - 09:57:38 UTC
This archive was generated by hypermail 2.3.0
: Wed Oct 23 2024 - 09:15:01 UTC