次: , 前: List-related Predicates, 上: Lists


5.4 リストの要素の参照

— 機能: car cons-cell

この関数は、コンスセルcons-cellの最初のポインタが指す値を返す。 別のいい方をすれば、cons-cellcarを返す。

特別な場合として、cons-cellnilのときには、 carnilを返すと定義する。 したがって、任意のリストはcarの正しい引数である。 引数がコンスセルでもnilでもなければエラーを通知する。

          (car '(a b c))
               => a
          (car '())
               => nil
     
— 機能: cdr cons-cell

この関数は、コンスセルcons-cellの2番目のポインタが指す値を返す。 別のいい方をすれば、cons-cellcdrを返す。

特別な場合として、cons-cellnilのときには、 cdrnilを返すと定義する。 したがって、任意のリストはcdrの正しい引数である。 引数がコンスセルでもnilでもなければエラーを通知する。

          (cdr '(a b c))
               => (b c)
          (cdr '())
               => nil
     
— 機能: car-safe object

この関数は、コンスセルのcarを取り出すが、 他のデータ型に対するエラーを回避する。 objectがコンスセルならばobjectcarを返すが、 さもなければnilを返す。 これはcarと対照的であり、 carobjectがリストでないとエラーを通知する。

          (car-safe object)
          ==
          (let ((x object))
            (if (consp x)
                (car x)
              nil))
     
— 機能: cdr-safe object

この関数は、コンスセルのcdrを取り出すが、 他のデータ型に対するエラーを回避する。 objectがコンスセルならばobjectcdrを返すが、 さもなければnilを返す。 これはcdrと対照的であり、 cdrobjectがリストでないとエラーを通知する。

          (cdr-safe object)
          ==
          (let ((x object))
            (if (consp x)
                (cdr x)
              nil))
     
— 機能: nth n list

この関数は、listn番目の要素を返す。 要素は0から数えるので、listcarは要素番号0。 listの長さがnかそれ未満であると、値はnilになる。

nが負であると、nthlistの最初の要素を返す。

          (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

— 機能: nthcdr n list

この関数は、listn番目のcdrを返す。 いいかえれば、listの始めのn個のリンクを飛び越えて、 そのあとにあるものを返す。

nが0か負であると、nthcdrlist全体を返す。 listの長さがnかそれ未満であると、 nthcdrnilを返す。

          (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)
     
— 機能: safe-length list

この関数は、エラーや無限ループを回避して、listの長さを返す。

listが実際にはリストでない場合には、safe-lengthは0を返す。 listに循環があると、少なくとも異なる要素の個数を表す有限値を返す。

循環はないと思われるリストの長さを計算するもっとも一般的な方法は、 lengthです。 See Sequence Functions

— 機能: caar cons-cell

これは(car (car cons-cell))と同じ。

— 機能: cadr cons-cell

これは(car (cdr cons-cell))(nth 1 cons-cell)と同じ。

— 機能: cdar cons-cell

これは(cdr (car cons-cell))と同じ。

— 機能: cddr cons-cell

これは(cdr (cdr cons-cell))(nthcdr 2 cons-cell)と同じ。