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

Re: corrections and suggestions




    3.1. may name --> names
    Question: Why say "A variable that does so is said to be bound to the
    location."  Is it possible to have variables that aren't bound to
    locations?  If so, how?  The reader should not be kept in the dark.

There exist identifiers that are not syntactic keywords.  According to the
first sentence of 3.1, any such identifier may be used as a variable.  The
catch comes in an implementation with unbound variables, such as PC Scheme,
where just using an identifier as a variable does not make it name a
location; that must be done with a binding construct.  I see your point,
but I suspect that many readers would prefer to remain in the dark about
this sort of thing until the next paragraph.

A related issue is that (top level) DEFINE is missing from the list of
binding constructs in the next paragraph.

    I don't like the last sentence of 6.9.  Opinions also differ on the
    merits of SEQUENCE, but we didn't apologize for it or give SEQUENCE
    less than optional status by not listing it under BEGIN as an
    (optional) form.  List CALL/CC as a procedure under
    CALL-WITH-CURRENT-CONTINUATION and replace the last sentence with a
    statement that CALL/CC is equivalent.  Several of us feel rather
    strongly about this.

Whoa!  Two wrongs don't make a right.  Let's try to get rid of SEQUENCE
instead.  Several of us feel rather strongly that CALL/CC ought to call
the C compiler.  Seriously, to add alternative names for procedures now
would be inconsistent with our success in getting rid of =? et cetera.

    Replace the last sentence of the WITH-*-*-FILE paragraph with
    "Furthermore, when these procedures return, they close the
    default port and restore the previous default.  If an escape procedure
    is used to escape from the continuation of these procedures, their
    behavior is implementation dependent."
    [[Rational: the existing "in constrast" statement is incorrect.
    Where is the contrast?  And more important, some systems will
    automatically change the default port if the continuation is escaped,
    but we probably don't want to even mention, let alone require, such
    behavior.]]

The contrast is that WITH-*-*-FILE will close the default port whenever
you throw out of it without having done a CALL-WITH-CURRENT-CONTINUATION,
even if you stored the value of (CURRENT-*-PORT) in a global variable
before you did the throw.  CALL-WITH-*-FILE would never do a thing like
that.  To me, this is a striking contrast.

Peace, Will