[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