[LISPWORKS][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


Issue LISP-SYMBOL-REDEFINITION-AGAIN Writeup

Issue:        LISP-SYMBOL-REDEFINITION-AGAIN

Reference: X3J13/92-102 (dpANS 12.24)

Section 11.1.2.1.1 Constraints on the COMMON-LISP Package

for Conforming Implementations (p.11-5)

Section 11.1.2.1.2 Constraints on the COMMON-LISP Package

for Conforming Programs (p.11-5..6)

Section 11.1.2.1.2.1 Some Exceptions to Constraints on the

COMMON-LISP Package for Conforming Programs (p.11-6)

X3J13/90-419 LISP-SYMBOL-REDEFINITION (Version 8)

X3J13/92-1412 Barry Margolin comment #12

X3J13/92-2517 Kim Barrett comment #17

"The Art of the Metaobject Protocol", Section 5.3.1, p.142

Category: CHANGE/CLARIFICATION

Edit History: Version 1, 12/31/92, Kim Barrett

Status: Proposal MORE-FIXES passed (10+1)-0 on letter ballot 93-302.

Problem Description:

The set of restrictions on conforming programs specified in 11.1.2.1.2 is

incomplete. Some constraints added by X3J13/90-419 were not included, and

there are some additional restrictions that were missed entirely.

Proposal (LISP-SYMBOL-REDEFINITION-AGAIN:MORE-FIXES):

1. Make the following changes to existing items in 11.1.2.1.2.

a. Add "undefining" to item 2, prohibiting the removal of function

definitions.

b. Add "undefining" to item 3, prohibiting the removal of macro and

compiler-macro definitions.

2. Add the following items to 11.1.2.1.2.

a. Defining a \term{setf expander} for it (via \funref{defsetf} or

\funref{define-setf-method}).

b. Defining, undefining, or binding its \term{setf function name}.

c. Defining it as a \term{method combination} type (via

\funref{define-method-combination}).

d. Using it as the class-name argument to \funref{setf} of

\funref{find-class}.

e. Binding it as a \term{catch tag}.

f. Binding it as a \term{restart} \term{name}.

g. Defining a \term{method} for a \term{standardized} \term{generic

function} which is \term{applicable} when all of the \term{arguments}

are \term{direct instances} of \term{standardized} \term{classes}.

3. Add the following as an additional paragraph for 11.1.2.1.2.1.

If an \term{external symbol} of \thepackage{common-lisp} is not defined as

a \term{standardized} \term{function}, \term{macro}, or \term{special

operator}, it is allowed to lexically \term{bind} its \term{setf function

name} as a \term{function}, and to declare the \declref{ftype} of that

\term{binding}.

4. Add the following entry to the glossary.

\gentry{setf function name} \Noun\ (of a \term{symbol})

the \term{list} \f{(setf \term{symbol})}.

Editorial Impact:

Several small additions described above.

Rationale:

Items 1, 2a through 2d, and 3 were in LISP-SYMBOL-REDEFINITION (v8) but were

not included in the draft. Items 2a, 2b, and 3 also respond to Margolin's

comment.

Item 4 defines terminology for the other items to use.

Items 2e and 2f are cases that were previously overlooked.

Item 2g was also previously overlooked. It is a recasting of the first

bullet on p.143 of AMOP. It responds to both Margolin's and Barrett's

comments.

Discussion:

It's unfortunate that section 11.1.2.1 doesn't contain any rationale for the

specified restrictions, but changing that is beyond the scope of this proposal.


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.