On Sep 15, 2009, at 1:40 PM, Andre van Tonder wrote: > In R6RS this confusing situation was simplified when the letrec* > semantics > was chosen for internal definitions. So R6RS was a step forward > in the sense that BEGIN is now always a sequencing primitive ---- > /EXCEPT when it is not/ ---- BEGIN in R6RS is emphatically a > sequencing primitive for internal definitions but emphatically not a > sequencing > primitive for syntax definitions. This is IMO at best confusing.
I would be very confused if there were such a thing as a sequencing primitive for syntax definitions. Expansion order is typically left up to the implementation, so long as it plays by the rules. What isn't left up to the implementation is *visibility*, and here R6RS laid out the following rules: Internal syntax definitions may be used in following forms, or on the right-hand side of a `define' or `define-syntax' in all forms. These rules are the syntactic analogue of the binding and availability rules of `letrec*' for ordinary variables: the bindings are visible in all of the inits, but are not available for use during the evaluation of preceding init expressions. -- Brian Mastenbrook [email protected] http://brian.mastenbrook.net/ _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
