[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
define (resend)
We have one great difficulty with the RRRS as it stands: DEFINE can not make
global bindings when used locally and still be consistent with the report.
Much has been said about the pros and cons of the "MIT style" local define,
and it is clear that a consensus is not possible, so a compromise is in
order. Simply making MIT style optional is not acceptible: optional syntax,
if implemented, must conform to a single semantics. Thus DEFINE semantics is
preempted as the report is currently written.
Using a different keyword, such as DEFINE-GLOBAL, to make global definitions
from lexically nested positions is not acceptible to us. We have tried to
live with such arrangements for some months now, and have found them
intolerable.
A compromise position would be to include a form such as DEFINE-GLOBAL in
the report, hopefully as a required special form, and make an explicit
exception in the case of DEFINE to the rule that optional features, if
implemented, always have a single semantics. The idea is that it should be
possible, in any "standard" Scheme that supports some kind of macro package,
to get *either* style of lexical DEFINE by simply loading the appropriate
macro package. Failing that, it should at least be *possible* for a
Scheme implementation to provide such packages, and allow either package to
be loaded without stepping outside of the "standard".
This compromise is not something that anyone would love, but it is most
sincerely hoped that it is something that everyone can live with. Then
no one will feel bad about being associated with the RRRS.
Chris Haynes
Dan Friedman
Kent Dybvig