[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: small changes
As the current editor of the RRRS, I would like to make the following to
last year's report.
If you have serious objections let me know. Otherwise I'll go ahead.
-----
Compatible changes:
- Allow identifiers to begin with tilde (^) and underscore (_). These
characters can't begin numbers, and are allowed elsewhere in
identifiers, so this seems innocuous and reasonable. Was there some
reason this wasn't permitted in the first place?
- Allow the characters - and + in the middle of identifiers. I assume
this was an oversight.
I would like to see the Common Lispy definition that anything with no
other possible syntax (especially wrt numbers) is an identifier. I don't
necessarily like it, but I see no reason to do otherwise, and I might
be interested sometime in implementing Common Lisp in Scheme.
- I don't know of anyone who is a NAMED-LAMBDA partisan, so I intend to
flush it. (It's not essential, anyhow.) However, I know there are some
people out there who are partial to REC, so I'll take the conservative
position again and leave it in (even though I and other MIT folks don't
like it).
Thank you for leaving in REC. I could not live without it.
Incompatible change:
I'd like to change the meaning of (DEFINE (form var ...) body ...) so
that it's defined in terms of LAMBDA instead of NAMED-LAMBDA. The only
reason this existed in the first place, I think, was because that's the
way MIT Scheme's DEFINE was defined. But on talking individually with
many people at MIT and elsewhere, I find that no one likes this
semantics and would rather have the simpler expansion in terms of
LAMBDA.
Can we flush internal DEFINE and get Abelson & Sussman w/Sussman to make
a new edition without it?
I have made all of Will's suggested "non-controversial changes", and
have also changed the description of DO as previously discussed, which
appears to be non-controversial.
I've forgotten what the non-controversioal changes to DO are. Perhaps
you could refresh my memory. I hope it was related to the implied use of
set! in the description used in the manual. I would to be able to define
DO as:
(do ((x v u ...) ...) (t r ...) e ...)
==>
((rec loop
(lambda (x ...)
(if t
(begin r ...)
(begin e ... (loop u ...)))))
v ...)
I would also like to bring up the case insensitivity issue once again.
Yes, I do prefer that A-Symbol and a-symbol be different. I like to use
case to set off certain things, like X for set and x for the element in
(member x X). I see no value in having case-insensitive symbols, and
a lot of conversion trouble. I think most of us now have terminals with
lower-case letters. I would like the special-form keywords and function
names to be in lower case.
On one other issue, there are some of us here at IU who have serious
difficulty with #!true and #!false, and we will be sending out a new
proposal under separate cover in a day or so.
Kent