form—a form.
environment—an environment object.
The default is nil
.
generalized-boolean—a generalized boolean.
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:
constantp
.
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
.
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.
(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
The state of the global environment (e.g., which symbols have been declared to be the names of constant variables).