述語

Common Lispのtypepsubtypepはないので、 subclasspderivedpで疑似実現すること。



eq obj1 obj2 [関数]

obj1obj2が同じオブジェクトを指すポインタあるいは同じ 数値のときTを返す。 例えば:(eq 'a 'a)はT、(eq 1 1)はT、(eq 1. 1.0)はNIL、 (eq "a" "a")はNILである。


eql obj1 obj2 [関数]
EusLispの中で数値は全て直接値で表現されるため、eqeqlは 同一である。


equal obj1 obj2 [関数]
いろんな構造のオブジェクトの等価性をチェックする。オブジェクトは、文字列・ベクトル・ 行列などで再帰的に参照してないことが保証されなければならない。 obj1obj2が再帰的に参照されていたとすると、 equalは無限ループとなる。


superequal obj1 obj2 [関数]
superequalは、環状参照をチェックするので遅い。しかしロバストな等価が得られる。


null object [関数]

objectがNILのとき、Tを返す。 (eq object nil)を評価する。


not object [関数]
notは、nullと同一である。


atom object [関数]
オブジェクトがconsのインスタンスである時のみ、NILを返す。 (atom nil) = (atom '()) = T)
注意:vectors, strings, read-table, hash-tableなどに対しては、それらがどんなに 複雑なオブジェクトとなっていてもatomはTを返す。


every pred &rest args [関数]
全てのargspredについてTを返した時のみ Tを返す。everyは、predが全てのargsに対して効力があるかどうかを 検査する時に使用される。


some pred &rest args [関数]
argsのうちどれか1つがpredについてTを返したとき Tを返す。someは、predargsのどれかに対して効力があるかどうかを 検査する時に使用される。


functionp object [関数]
objectapplyfuncallで与えられる関数オブジェクトであるならTを返す。
注意:マクロはapplyfuncallを適用することができない。 functionpは、objectが、type=0のコンパイルコードか、関数定義を持つsymbolか、 lambda-formかあるいはlambda-closureであったとき、Tを返す。 Examples: (functionp 'car) = T, (functionp 'do) = NIL


compiled-function-p object [関数]
objectが、コンパイルコードのインスタンスであったとき、Tを返す。 そのコンパイルコードが関数かまたはマクロかを知るためには、 そのオブジェクトに:typeメッセージを送り、その返り値が functionmacroのどちらになっているかを調べる。


2016-04-05