On Mar 11, 2007, at 5:30 PM, Per Bothner wrote:

* It improves consistency.  Consider:

   #|1|# (define VAR (MAC))
   #|2|# (set! VAR (MAC))
   #|3|# (list (MAC))
   #|4|# (MAC)
   #|5|# (define VAR (lambda () (MAC)))
   #|6|# (set! VAR (lambda () (MAC)))
   #|7|# (define-syntax MAC ...)

Which of #1-#6 are valid when followed by #7?
By my reading only #1 and #5 are allowed. But that doesn't seem natural
to me.  If #5 is allowed, then #6 should be allowed.
Similarly for #1 and #2.

Since #7 is a definition, it cannot come after an expression. Consequently, #2, #3, and #6 are not allowed after define-syntax, and this properly has nothing to do with whether expanding the body of a lambda is deferred or not.

So, #1 and #5 are allowed because they are definitions and therefore can
appear with other definitions.  The occurrence of MAC is a red herring
because the exact same answer can be given for:

#1# (define VAR 1)
#2# (set! VAR 1)
#3# (list 1)
#4# (MAC)
#5# (define VAR (lambda () 1))
#6# (set! VAR (lambda () 1))
#7# (define-syntax MAC ...)

Aziz,,,

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

Reply via email to