dyb at cs.indiana.edu
Tue Dec 13 13:21:57 EST 2005
> > As I interpret the R5RS, it prescribes a single environment for all
> > identifiers. Here is an excerpt from the start of Section 3.1:
> > An identifier may name a type of syntax, or it may name a location
> > where a value can be stored. An identifier that names a type of syntax
> > is called a syntactic keyword and is said to be bound to that syntax.
> > An identifier htat names a location is called a variable and is said to
> > be bound to that location.
> > To my knowledge the issue of splitting it into two or more environments
> > for R6RS has not come up before. I am opposed to any such change.
> This is about syntax. What about systems supporting old-lisp macros? Do you
> want to forbid them?
Of course I don't want to forbid old-lisp macros; one can define them
using syntax-case! In fact, Common Lisp's defmacro can be defined as
a macro, a fairly simple one, using syntax-case. Even in Common Lisp,
however, one cannot have a macro FOO that expands into a procedure call
of the form (FOO x ...). One can expand (FOO x ...) into just FOO, but
only because the language has separate namespaces for functions/macros
Our old EPS macro system did allow this kind of thing because one could
choose not to recursively expand the output of a macro. I have not
missed this feature at all, since there is always a good, if not better,
way to accomplish the same end result.
More information about the R6RS