"Jörg F. Wittenberger":
> The problem is not cond-expand, but rscheme accepts define-macro only at top 
> level.

R5RS also limits define-syntax to the top level.  R6RS and R7RS
relax this, but not everyone's there currently.  (See below).

We could use cond-expand to define top-level macros if the
Scheme implementation provides no alternative.  In the
other cases, we could provide a cleaner namespace for invokers.

We don't define many macros, I only see ":", "no-values",
"readable-kernel-module-contents", and "let-splitter".
We could rename "let-splitter" to "readable-let-splitter",
and "no-values" to "readable-no-values", to reduce the
risks of namespace issues.  I'd hate to use something other ":".

--- David A. Wheeler

Here's define-syntax info for R5RS, R6RS, and R7RS:
* R5RS states that define-syntax syntax definitions
"are valid only at the top level of a program"
(section 5.3, Syntax definitions).  This is relaxed later:
* In R6RS, "Keyword bindings established by define-syntax are visible
throughout the body in which they appear, except
where shadowed by other bindings, and nowhere else, just
like variable bindings established by define." (Section 11.2.2).
* R7RS relaxes this restriction; it describes
define-syntax and says that "syntax definitions can
appear at the outermost level or nested within a body
(section 5.4, syntax definitions).

Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
Readable-discuss mailing list

Reply via email to