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
