On Sep 17, 2009, at 6:02 AM, Andre van Tonder wrote:

> On Wed, 16 Sep 2009, Brian Mastenbrook wrote:
>
>> On Sep 16, 2009, at 4:16 PM, Andre van Tonder wrote:
>>> I'm not sure what you mean, but LETREC* evaluates bindings in left  
>>> to right
>>> sequence.
>>
>> It evaluates the expressions in left to right order, but all of the  
>> bindings are visible over the evaluation of the inits.
>
> Again, as I have said many times and even explained with examples, I  
> am not contesting the visibility rules at the toplevel for macros.   
> In the following
> toplevel sequence typed at a REPL
>
>  (m)
>  (define-syntax m (syntax-rules ((_) .....)))
>
> I /agree/ that M is lexically VISIBLE in the first line.
> But I /disagree/ that M should yet be bound to the macro when the  
> first line
> is expanded.

The R6RS two-pass rules agree with you.

However, in:

(define a (m))
(define-syntax m ...)

The binding of `m' may be used on the right-hand side of `define',  
because `define' operates as a syntactic delay, just as with ordinary  
variables you can write:

(define a (lambda () b))
(define b 2)

> Visibility is not the same as having a having a given value assigned.
> You are confusing the two.

Absolutely not. If I've been confused by anything it's been repeated  
references to order of evaluation...

--
Brian Mastenbrook
[email protected]
http://brian.mastenbrook.net/


_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to