PROCLAIM-SCOPEPROCLAIM without worrying about cleaning up afterward. For example, a file containing:
In some cases, such as SPECIAL, there is no way to disable the effect of a proclamation.
In other cases, such INLINE and SAFETY, it is possible but inconvenient to change the declaration later. Even so, there is no way of inquiring about the previous value in order to correctly restore it.
:LOCALLY keyword parameter to PROCLAIM which controls the scope of a proclamation.
(PROCLAIM proclamation :LOCALLY T) In a file, this would put the PROCLAMATION into effect for the entire rest of time during which the file was being loaded (including recursive loads).
Interactively, it would be the same as :LOCALLY NIL.
(PROCLAIM proclamation :LOCALLY NIL) In a file or interactively, this would put the PROCLAMATION into effect permanently. (The declaration would not be retracted when the file was done loading.)
:LOCALLY keyword parameter to PROCLAIM which controls the scope of a proclamation.
(PROCLAIM proclamation :LOCALLY T) In a file, this would put the PROCLAMATION into effect for the entire rest of the current file. Recursive loads or compilations would rebind this to the global default.
Interactively, this would affect interactive work but would not affect the default for files loaded.
(PROCLAIM proclamation :LOCALLY NIL) In a file or interactively, this would put the PROCLAMATION into effect permanently, affecting the default for files in which no local proclamation overrode it. (The declaration would not be retracted when the file was done loading.)
FOO" containing:
(PROCLAIM '(OPTIMIZE (SPEED 0) (SAFETY 3)) :LOCALLY T) ...
Doing
(LOAD "FOO")
would not clobber the global default for SPEED/SAFETY.
CL... - Declarations of optimize qualities such as speed/safety - Absence of UNSPECIAL declaration
Macsyma has a lot of files which do (PROCLAIM '(SPECIAL ...)) at the top of the file and then does an implementation-specific (PROCLAIM '(UNSPECIAL ...)) at the bottom for implementations that support it. It would be both more modular and more portable to do something such as what is proposed here.
SAFETY, SPEED, COMPILATION-SPEED) in file compilations and doesn't allow them to affect the global default.SPEED and SAFETY proclamations.SPEED/SAFETY information locally in a file without worrying about the pervasive effect on other code compiled/loaded subsequently in the same environment.