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



Reference: X3J13/92-102 (dpANS 12.24)

Section Constraints on the COMMON-LISP Package

for Conforming Implementations (p.11-5)

Section Constraints on the COMMON-LISP Package

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

Section Some Exceptions to Constraints on the

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


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


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 is

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

there are some additional restrictions that were missed entirely.


1. Make the following changes to existing items in

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


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

compiler-macro definitions.

2. Add the following items to

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


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

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


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


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

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


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.


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


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



It's unfortunate that section 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.