[R6RS] libraries

dyb at cs.indiana.edu dyb
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
and variables.

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 mailing list