Next: , Previous: , Up: リスト   [Contents][Index]


5.2 リストのための述語

以下の述語はあるLispオブジェクトがアトムか、コンスセルか、リストなのか、またはオブジェクトがnilかどうかテストします(これらの述語の多くは他の述語で定義することもできるが、多用されるので個別に定義する価値がある)。

Function: consp object

この関数はobjectがコンスセルならt、それ以外はnilをリターンする。たとえnilリストであっても、コンスセルではない。

Function: atom object

この関数はobjectがアトムならt、それ以外はnilをリターンする。シンボルnilはアトムであり、かつリストでもある。そのようなLispオブジェクトはnilだけである。

(atom object) ≡ (not (consp object))
Function: listp object

この関数はobjectがコンスセルかnilならt、それ以外はnilをリターンする。

(listp '(1))
     ⇒ t
(listp '())
     ⇒ t
Function: nlistp object

この関数はlistpの反対である。objectがリストでなければt、それ以外はnilをリターンする。

(listp object) ≡ (not (nlistp object))
Function: null object

この関数はobjectnilならt、それ以外はnilをリターンする。この関数はnotと等価だが、明解にするためにわたしたちはobjectを真偽値だと考えるときはnot (組み合わせ条件の構築notを参照)、それ以外の場合にnullを使用している。

(null '(1))
     ⇒ nil
(null '())
     ⇒ t
Function: proper-list-p object

この関数はobjectが適正なリストならobjectの長さ、それ以外はnilをリターンする(リストとコンスセルを参照)。適正なリストとはlistpを満足することに加えて、循環リストやドットリストでもない。

(proper-list-p '(a b c))
    ⇒ 3
(proper-list-p '(a b . c))
    ⇒ nil