#

## 11.1.2.1.2 Constraints on the COMMON-LISP Package for Conforming Programs

Except where explicitly allowed, the consequences are undefined if any of the following actions are performed on an external symbol of the `COMMON-LISP` package:

1. Binding or altering its value (lexically or dynamically). (Some exceptions are noted below.)

2. Defining, undefining, or binding it as a function. (Some exceptions are noted below.)

3. Defining, undefining, or binding it as a macro or compiler macro. (Some exceptions are noted below.)

4. Defining it as a type specifier (via defstruct, defclass, deftype, define-condition).

5. Defining it as a structure (via defstruct).

6. Defining it as a declaration with a declaration proclamation.

7. Defining it as a symbol macro.

8. Altering its home package.

9. Tracing it (via trace).

10. Declaring or proclaiming it special (via declare, declaim, or proclaim).

11. Declaring or proclaiming its type or ftype (via declare, declaim, or proclaim). (Some exceptions are noted below.)

12. Removing it from the `COMMON-LISP` package.

13. Defining a setf expander for it (via defsetf or define-setf-method).

14. Defining, undefining, or binding its setf function name.

15. Defining it as a method combination type (via define-method-combination).

16. Using it as the class-name argument to setf of find-class.

17. Binding it as a catch tag.

18. Binding it as a restart name.

19. Defining a method for a standardized generic function which is applicable when all of the arguments are direct instances of standardized classes.

## 11.1.2.1.2.1 Some Exceptions to Constraints on the COMMON-LISP Package for Conforming Programs

The following X3J13 cleanup issues, not part of the specification, apply to this section:

- PROCLAIM-ETC-IN-COMPILE-FILE:NEW-MACRO
- DEFINE-COMPILER-MACRO:X3J13-NOV89
- LISP-SYMBOL-REDEFINITION-AGAIN:MORE-FIXES
- LISP-SYMBOL-REDEFINITION:MAR89-X3J13

Copyright 1996-2001, Xanalys Inc. All rights reserved.