On Tue, 15 Sep 2009, Ray Dillinger wrote:

> There is no absolute reason why the primitive for bundling
> multiple forms has to also be a sequencing primitive. But it's
> usually convenient for it to be so, and as long as mutation
> exists, we need a sequencing primitive, and as far as I know
> no one has demonstrated any reason for the sequencing and
> bundling primitives to be distinct.

Interesting point.  I should point out, however, that
in R5RS internal BEGIN is actually not a sequencing primitive
when it encloses internal definitions, due to the letrec
semantics.  In R5RS, this use of BEGIN expresses splicing,
but emphatically not sequencing.

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.

>> Would anyone who is not doing "screwy" things with macros ever notice
>> the difference?
>
> Absolutely.  It is not at all screwy to have (and need!) a single
> macro invocation to expand into multiple definitions.

I agree, this is a very common use of BEGIn in macros.

Andre

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

Reply via email to