By default most system-provided definers such as cl:defun
, cl:defmacro
, cl:defmethod
and so on signal a warning when they redefine an existing definition. You can bind or set *redefinition-action* to eliminate such warnings or make it signal error instead.
Also, the system is configured to protect symbols in implementation packages against definition and redefinition. For example, an error is signaled if you attempt to put a function definition on the symbol cl:*read-base*
. This behavior is configurable by the variables *handle-warn-on-redefinition* and *packages-for-warn-on-redefinition*. Bear in mind that the default configuration protects the stability of the system, so if you need to prevent such errors it is better to bind one or both of these variables around specific defining forms, rather than setting their global values.
LispWorks User Guide and Reference Manual - 13 Feb 2015