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

issue DEFCONSTANT-SPECIAL, version 2

I find p56 to be unambiguous:

 ``Certain global variables are reserved as ``named constants.''
 They have a global value and may not be bound or assigned to.

At the very least, this quote must be in the problem description
in order for the description to be fair.

If there are competing passages, they should be cited as well.

Although I personally find it unambiguous, and I do not personally think
that a clarification is warranted, I generally accept that if someone
disagrees about the unambiguous nature of a passage, then that is an
existence proof that a clarification is in order, so I won't try to stop
the issue.

Nevertheless, I agree with GSB that for you to present this as a
clarification is at best misleading.

Further, you don't cite a single example motivating why it makes any
difference to you whether this is is a special or a lexical. To give
your case more weight, you would be best to show a case where it would
be useful to (for example) bind such a variable.

If PROCLAIM-LEXICAL passes, there will be these options:

 - Constant names are pervasively global  (G).
 - Constant names are pervasively special (DG).
 - Constant names are pervasively lexical (LG).
 - Constant names cannot be bound, so may be any of global, special,
   or lexical since it's not possible to tell the difference.

If they were pervasively global, then it would make no sense to bind
them, so we can discount that.

If they were pervasively special, then special binding them would affect
their global value and would mean you couldn't inline them, so we can
discount that.

If they are going to be bindable, it's clear that they have to be lexical.
If they are not going to be bindable, then it doesn't matter if they're
lexical or not.

I think you need to present two options:

 - Clarify that names of constants cannot be bound.
   I believe this is a simple clarification.

 - Define that names of constants are permissible for use as local

I believe that a serious problem with making them available for use as
local variables is that macros will no longer be able to reliably use
them because they have to worry that a user has re-bound them to something

I believe that people who want to use MOST-POSITIVE-FIXNUM and friends
as lexical (or special) variables which they can bind for their own uses
should shadow that symbol, leaving LISP:MOST-POSITIVE-FIXNUM to do its
job and not be bound.

If you want to present a case to the contrary, I think that's fine.
I just hope you fairly represent the viewpoints of us all so that X3J13
as a whole can make an informed decision.