変数にはどんなデータも代入出来るので、
プログラムの実行中にデータ型を判定する必要が生じることがある。
listpとかsymbolpとか。
[1]> (listp (first '(a b c))) NIL [2]> (symbolp (first '(a b c))) T [3]> (integerp (first '(a b c))) NIL [4]> (atomp (first '(a b c))) *** - EVAL: undefined function ATOMP The following restarts are available: USE-VALUE :R1 Input a value to be used instead of (FDEFINITION 'ATOMP). RETRY :R2 Retry STORE-VALUE :R3 Input a new value for (FDEFINITION 'ATOMP). ABORT :R4 Abort main loop Break 1 [5]> :a [6]> (atom (first '(a b c))) T [7]> (consp (first '(a b c))) NIL [8]> (numberp (first '(a b c))) NIL
なお、真か偽かを判定する関数を述語(predicate)といい、
慣習として述語の名前の終わりにはこの頭文字のpをつける事が多い。
なお、atomとnullにpがついていないのは、この慣習が出来るより以前の昔から
あったからである。
まあ、inodeのiが結局何なのか謎なのと同じで、
こういう慣習は無理に知らなくてもよいのかもしれない。