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

Reply via email to