|
ANSI Common Lisp 3 Evaluation and Compilation 3.8 Dictionary Evaluation and Compilation
3.8.30 constantp |
Function |
- Syntax:
-
constantp
form &optional environment
generalized-boolean
- Arguments and Values:
-
form - a form.
environment - an environment object.
The default is nil.
generalized-boolean - a generalized boolean.
- Description:
-
Returns true if form can be determined
by the implementation to be a constant form
in the indicated environment;
otherwise, it returns false indicating either
that the form is not a constant form
or that it cannot be determined whether or not form is a constant form.
The following kinds of forms are considered constant forms:
-
Self-evaluating objects
(such as numbers,
characters,
and the various kinds of arrays)
are always considered constant forms
and must be recognized as such by constantp.
-
Constant variables, such as keywords,
symbols defined by Common Lisp as constant (such as nil, t, and pi),
and symbols declared as constant by the user in the indicated environment
using defconstant
are always considered constant forms
and must be recognized as such by constantp.
-
quote forms are always considered constant forms
and must be recognized as such by constantp.
-
An implementation is permitted, but not required, to detect
additional constant forms. If it does, it is also permitted,
but not required, to make use of information in the environment.
Examples of constant forms for which constantp might
or might not return true are:
(sqrt pi),
(+ 3 2),
(length '(a b c)),
and
(let ((x 7)) (zerop x)).
If an implementation chooses to make use of the environment
information, such actions as expanding macros or performing function
inlining are permitted to be used, but not required;
however, expanding compiler macros is not permitted.
- Examples:
-
(constantp 1) true
(constantp 'temp) false
(constantp "temp)) true
(defconstant this-is-a-constant 'never-changing) THIS-IS-A-CONSTANT
(constantp 'this-is-a-constant) true
(constantp "temp") true
(setq a 6) 6
(constantp a) true
(constantp '(sin pi)) implementation-dependent
(constantp '(car '(x))) implementation-dependent
(constantp '(eql x x)) implementation-dependent
(constantp '(typep x 'nil)) implementation-dependent
(constantp '(typep x 't)) implementation-dependent
(constantp '(values this-is-a-constant)) implementation-dependent
(constantp '(values 'x 'y)) implementation-dependent
(constantp '(let ((a '(a b c))) (+ (length a) 6))) implementation-dependent
- Affected By:
-
The state of the global environment (e.g., which symbols have been
declared to be the names of constant variables).
- See Also:
-
defconstant
- Allegro CL Implementation Details:
-
None.
|