




The variable *packages-for-warn-on-redefinition* is a list of package names or the keyword :implementation, specifying packages which are "protected". For "protected" packages, LispWorks checks before defining (using any of the definer macros like cl:defun, cl:defclass and so on) any external symbol of these packages, and takes the action specified by *handle-warn-on-redefinition* (which defaults to signaling an error).
The symbol :implementation in *packages-for-warn-on-redefinition* indicates all of the packages which are part of the LispWorks implementation. That includes all the documented packages, including COMMON-LISP and KEYWORD but excluding some "user" packages like CL-USER and KW-USER, and some packages that are used internally.
For symbol value, setting and rebinding is not checked, but defining using definer macros like cl:defvar and cl:defparameter is checked.
:implementation from the list. In situations when this is required, you should do it by rebinding *packages-for-warn-on-redefinition* rather than setting it.cl:stream as a function gives an error (by default), even though cl:stream has only a class definition, and trying to define cl:car as a class also errors even though cl:car has only a function definition.:implementation.
:implementation was new in LispWorks 7.0.
In LispWorks 6.1 and earlier versions, the list could contain only package names, and the initial value was a long list of package names.
LispWorks User Guide and Reference Manual - 20 Sep 2017