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:
Copyright 1996-2005, LispWorks Ltd. All rights reserved.