% Function CONSTANTP
Function CONSTANTP
constantp form &optional environment => generalized-boolean
form - フォーム
environment - 環境オブジェクト。デフォルトはnilです。
generalized-boolean - generalized-boolean
指定されたenvironmentの下で、 formがその実装によって定数フォームであると決定できるとき、 trueが返却されます。 それ以外の、フォームが定数フォームではないか、 あるいはフォームが定数かどうか決定できないかの、 どちらかの場合にはfalseが返却されます。
下記に定義された種類のフォームが定数フォームであると考えます。
自己評価オブジェクト(例えば数、文字、そして多種な配列)は、
常に定数フォームであると考えられ、
constantpによって認識されなければなりません。
定数変数、キーワード、
Common Lispによって定義された定数シンボル
(例えばnil、t、pi)、
ユーザーがdefconstantでenvironmentに定数として指定したシンボルは、
常に定数フォームであると考えられ、
constantpによって認識されなければなりません。
実装はさらに追加で定数フォームを
検出することが許されますが、必須ではありません。
もしそれを行うのであれば、environmentの情報を使用することができますが、
必須ではありません。
constantpによってtrueかもしれないし
そうではないかもしれない定数フォームの例として次のものが挙げられます
(sqrt pi), (+ 3 2), (length '(a b c)), (let ((x 7)) (zerop x))。
もし実装がenvironmentの情報を使用するとしたとき、
マクロ展開や関数のinlineといった動作は許されますが、必須ではありません。
しかしコンパイラーマクロの展開は許されません。
(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
なし。
グローバル環境の状態 (例えば定数変数の名前として宣言されたシンボルなど)。
なし。
なし。