|
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.
|