[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

portability



I would say that a strict reading of the new draft, and perhaps even of
the RRRS, would say that ANY identifier other than those explicitly
listed as syntactic keywords (reserved words) may be used as a variable.
In other words, a correct implementation of the report would already
have the property that there are no other special forms other than the
ones explicitly listed in the report (the complete list is somewhere
inside the BNF).  So that a program which does (define trace ...)  or
(let ((loop ...)) ... (loop ...) ...)  would already be portable.  The
addition of ANY special form is an incompatible change to Scheme.

[Actually, if in a particular implementation special-form-ness is
cancelled out by DEFINE and lambda-binding, then it would probably be OK
in that implementation to have extra special forms/macros lying around,
since a program which used those identifiers for variables would still
be correct.  But let's not think about this possibility.]

I wouldn't say that all implementations would have to start up with the
stripped-down syntax, omitting all their favorite features, but I think
that supplying a mode in which this was the case, rather than saying
only a certain class of identifiers can be used as variables, is the
right thing.

Would any implementors have any problem providing a report-syntax-only
mode?  I know this is trivial in MIT Scheme and T, but we haven't heard
from other implementors.

If there are problems, then one way to cope would be to add to the
report's list of syntactic keywords some or all of the things which such
implementations would like to have be special forms, e.g. define-macro,
trace, make-environment, etc., simply saying that these are reserved for
use by particular implementations as syntactic keywords, but have no
meaning according to the report.  This is sort of the dual of Jim's
original suggestion.  It's pretty gross, but I thought I'd mention it.

How should this situation be explained in the report, if at all?

Jonathan