User Tools


Function PROCLAIM

Syntax

Arguments and Values

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.

A list of declaration identifiers that can be used with proclaim.

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)

DECLARE-VARIABLE-TYPES-GLOBALLY

;; Once this form is executed, the dynamic variable *TOLERANCE* must always contain a float. (declare-variable-types-globally 'float '(*tolerance*))

FLOAT

Affected By

None.

Exceptional Situations

None.

See Also

Macro DECLAIM, Symbol DECLARE, {\secref\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.

\issue{DYNAMIC-EXTENT:NEW-DECLARATION} \issue{DECLARE-FUNCTION-AMBIGUITY:DELETE-FTYPE-ABBREVIATION} \issue{DECLARE-MACROS:FLUSH}