KEYWORD-KEYWORDSLOAD, COMPILE, or EVAL is obliged to shadow EVAL-WHEN (although in practice many people forget and this crops up as a bug later on). This issue comes up a lot in embedded systems, such as Scheme which use stylized loaders, compilers, or evaluators.
The lambda-list keywords are not symbols on the keyword package. KEYWORDP is not true of them. Names that begin with & are generally not usable as variables because many compilers worry that names which begin with & but are not on LAMBDA-LIST-KEYWORDS might be unsupported `keywords' or mis-spellings of supported `keywords'.
EVAL-WHEN to use :EVAL, :LOAD, and :COMPILE rather than EVAL, LOAD, and COMPILE.
Change LAMBDA and the various macros which use &OPTIONAL, &REST, &AUX, &BODY, &WHOLE, &ENVIRONMENT, &KEY, and &ALLOW-OTHER-KEYS to :OPTIONAL to use :OPTIONAL, :REST, :AUX, :BODY, :WHOLE, :ENVIRONMENT, :KEY, and :ALLOW-OTHER-KEYS instead.
eg, (DEFUN FOO (W :OPTIONAL (X 3) (Y 4) :REST Z :KEY A B C) ...)
This change would make the term keyword would be used to denote one fewer concept in the language.
The `keywords' now in use could continue to be supported by any vendors for a while. Such a deviation would technically make an implementation not conform to the standard, but in practice would not be likely to cause any problems if phased out within a reasonable period of time.
EVAL, COMPILE, and LOAD not have a surprising effect on EVAL-WHEN.
Although this would not completely fix uses of the word keyword throughout the langauge, it would make the use of the term `keyword' considerably more regular.
The "&" character is freed for possible other uses. There is currently an occassional desire to use it as a readmacro character, but the need to have access to these keywords tends to make that impractical because no one wants to write: (defun foo (x \&optional y) ...).
People might differ on whether they think programs will look better.
Less extreme variations of this proposal might include accepting :keywords in addition to rather than instead of &keywords and/or allowing EVAL-WHEN to use STRING-EQUAL rather than EQL to find its `keywords'.