次: Building Lists, 前: List-related Predicates, 上: Lists
この関数は、コンスセルcons-cellの最初のポインタが指す値を返す。 別のいい方をすれば、cons-cellのcarを返す。
特別な場合として、cons-cellが
nilのときには、carはnilを返すと定義する。 したがって、任意のリストはcarの正しい引数である。 引数がコンスセルでもnilでもなければエラーを通知する。(car '(a b c)) => a (car '()) => nil
この関数は、コンスセルcons-cellの2番目のポインタが指す値を返す。 別のいい方をすれば、cons-cellのcdrを返す。
特別な場合として、cons-cellが
nilのときには、cdrはnilを返すと定義する。 したがって、任意のリストはcdrの正しい引数である。 引数がコンスセルでもnilでもなければエラーを通知する。(cdr '(a b c)) => (b c) (cdr '()) => nil
この関数は、コンスセルのcarを取り出すが、 他のデータ型に対するエラーを回避する。 objectがコンスセルならばobjectのcarを返すが、 さもなければ
nilを返す。 これはcarと対照的であり、carはobjectがリストでないとエラーを通知する。(car-safe object) == (let ((x object)) (if (consp x) (car x) nil))
この関数は、コンスセルのcdrを取り出すが、 他のデータ型に対するエラーを回避する。 objectがコンスセルならばobjectのcdrを返すが、 さもなければ
nilを返す。 これはcdrと対照的であり、cdrはobjectがリストでないとエラーを通知する。(cdr-safe object) == (let ((x object)) (if (consp x) (cdr x) nil))
この関数は、listのn番目の要素を返す。 要素は0から数えるので、listのcarは要素番号0。 listの長さがnかそれ未満であると、値は
nilになる。nが負であると、
nthはlistの最初の要素を返す。(nth 2 '(1 2 3 4)) => 3 (nth 10 '(1 2 3 4)) => nil (nth -3 '(1 2 3 4)) => 1 (nth n x) == (car (nthcdr n x))関数
eltも同様であるが、任意のシーケンスに適用できる。 歴史的な理由で引数の順序は逆である。 see Sequence Functions。
この関数は、listのn番目のcdrを返す。 いいかえれば、listの始めのn個のリンクを飛び越えて、 そのあとにあるものを返す。
nが0か負であると、
nthcdrはlist全体を返す。 listの長さがnかそれ未満であると、nthcdrはnilを返す。(nthcdr 1 '(1 2 3 4)) => (2 3 4) (nthcdr 10 '(1 2 3 4)) => nil (nthcdr -3 '(1 2 3 4)) => (1 2 3 4)
この関数は、エラーや無限ループを回避して、listの長さを返す。
listが実際にはリストでない場合には、
safe-lengthは0を返す。 listに循環があると、少なくとも異なる要素の個数を表す有限値を返す。
循環はないと思われるリストの長さを計算するもっとも一般的な方法は、
lengthです。
See Sequence Functions。