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なし。
グローバル環境の状態 (例えば定数変数の名前として宣言されたシンボルなど)。
なし。
なし。