|  | ANSI Common Lisp  3 Evaluation and Compilation  3.8 Dictionary Evaluation and Compilation 
 
 Syntax:
proclaim
declaration-specifier
   implementation-dependent 
Arguments and Values:
declaration-specifier - a declaration specifier.
Description:
Establishes the declaration specified by declaration-specifier
in the global environment.
Such a declaration, sometimes called a global declaration 
or a proclamation, is always in force unless locally shadowed.
 
Names of variables and functions within 
declaration-specifier refer to dynamic variables 
and global function definitions, respectively.
 
The next figure shows a list of declaration identifiers 
that can be used with proclaim.
 
 
 
Global Declaration Specifiers
  
    | declaration | inline | optimize | type |  
    | ftype | notinline | special |  |  
An implementation is free to support other (implementation-defined)
declaration identifiers as well.
 
Examples:
 (defun declare-variable-types-globally (type vars)
   (proclaim `(type ,type ,@vars))
   type)
 ;; Once this form is executed, the dynamic variable *TOLERANCE*
 ;; must always contain a float.
 (declare-variable-types-globally 'float '(*tolerance*))
 FLOAT 
See Also:
declaim,
declare,
Section 3.2 Compilation
Notes:
Although the execution of a proclaim form 
has effects that might affect compilation, the compiler does not make
any attempt to recognize and specially process proclaim forms.
A proclamation such as the following, even if a top level form,
does not have any effect until it is executed:
 
(proclaim '(special *x*))
 
If compile time side effects are desired, eval-when may be useful.
For example:
 
 
 (eval-when (:execute :compile-toplevel :load-toplevel)
   (proclaim '(special *x*)))
 
In most such cases, however, it is preferrable to use declaim for
this purpose.
 
Since proclaim forms are ordinary function forms,
macro forms can expand into them.
 
Allegro CL Implementation Details:
 None. |