Next: Building Lists, Previous: List-related Predicates, Up: 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。