Next: Building Lists, Previous: List-related Predicates, Up: Lists [Contents][Index]
この関数は、コンスセルcons-cellの1番目のスロットにより参照される値をreturnします。他の言い方をすると、この関数はcons-cellのCARをreturnします。
特別なケースとして、cons-cellがnilの場合、この関数はnilをreturnします。したがって、リストはすべて引数として有効です。引数がコンスセルでもnilでもない場合、エラーがシグナルされます。
(car '(a b c))
⇒ a
(car '())
⇒ nil
この関数は、コンスセルcons-cellの2番目のスロットにより参照される値をreturnします。他の言い方をすると、この関数はcons-cellのCDRをreturnします。
特別なケースとして、cons-cellがnilの場合、この関数はnilをreturnします。したがって、リストはすべて引数として有効です。引数がコンスセルでもnilでもない場合、エラーがシグナルされます。
(cdr '(a b c))
⇒ (b c)
(cdr '())
⇒ nil
この関数により、他のデータ型によるエラーを起こさずに、コンスセルのCARを取得できます。この関数は、objectがコンスセルの場合はobjectのCAR、それ以外はnilをreturnします。この関数は、objectがリスとでないときはエラーをシグナルするcarとは対象的です。
(car-safe object)
≡
(let ((x object))
(if (consp x)
(car x)
nil))
この関数により、他のデータ型によるエラーを起こさずに、コンスセルのCDRを取得できます。この関数は、objectがコンスセルの場合はobjectのCDR、それ以外はnilをreturnします。この関数は、objectがリスとでないときはエラーをシグナルするcdrとは対象的です。
(cdr-safe object)
≡
(let ((x object))
(if (consp x)
(cdr x)
nil))
このマクロはリストのCARを調べて、それをリストから取り去るのを1度に行なう便利な方法を提供します。この関数はlistnameに格納されたリストにたいして処理を行ないます。この関数はリストから1番目の要素を削除して、CDRをlistnameに保存し、その後で削除した要素をreturnします。
1番単純なケースは、リストに名前をつけるためのクォートされていないシンボルの場合です。この場合、このマクロは(prog1 (car listname) (setq listname (cdr listname)))と等価です。
x
⇒ (a b c)
(pop x)
⇒ a
x
⇒ (b c)
より一般的なのは、listnameが汎変数(generalized
variable)の場合です。この場合、このマクロはsetfを使用してlistnameに保存します。Generalized Variablesを参照してください。
リストに要素を追加するpushマクロについては、List Variablesを参照してください。
この関数は、listのn番目の要素をreturnします。要素は0から数えられるので、listのCARは要素0になります。listの長さがn以下の場合、値はnilです。
(nth 2 '(1 2 3 4))
⇒ 3
(nth 10 '(1 2 3 4))
⇒ nil
(nth n x) ≡ (car (nthcdr n x))
関数eltは似ていますが、これは任意の種類のシーケンスに適用されます。歴史的な理由により、この関数は逆の順序で引数を受け取ります。Sequence Functionsを参照してください。
この関数は、listのn番目のCDRをreturnします。他の言い方をすると、この関数はlistの最初のn個のリンクをスキップしてから、それ以降をreturnします。
nが0の場合、nthcdrはlist全体をreturnします。listの長さがn以下の場合、nthcdrはnilをreturnします。
(nthcdr 1 '(1 2 3 4))
⇒ (2 3 4)
(nthcdr 10 '(1 2 3 4))
⇒ nil
(nthcdr 0 '(1 2 3 4))
⇒ (1 2 3 4)
この関数は、listの最後のリンクをreturnします。このリンクのcarは、このリストの最後の要素です。listがnullの場合、nilがreturnされます。nが非nilの場合、n番目から最後までのリンクがreturnされます。nがlistの長さより大きい場合は、list全体がreturnされます。
この関数は、エラーや無限ループの危険なしで、listの長さをreturnします。この関数は一般的に、リスト内のコンスセルの個数をreturnします。しかし循環リストでは、単に上限値が値となるため、非常に大きくなる場合があります。
listがnilでもコンスセルでもない場合、safe-lengthは0をreturnします。
循環リストを考慮しなくてもよい場合に、リストの長さを計算するもっとも一般的な方法は、lengthを使うことです。Sequence Functionsを参照してください。
これは、(car (car cons-cell))と同じです。
これは、(car (cdr cons-cell))または(nth 1
cons-cell)と同じです。
これは、(cdr (car cons-cell))と同じです。
これは、(cdr (cdr cons-cell))または(nthcdr 2
cons-cell)と同じです。
この関数は、リストxから、最後の要素、または最後のn個の要素を削除してreturnします。nが0より大きい場合、この関数はリストのコピーを作成するので、元のリストに影響はありません。一般的に、(append
(butlast x n) (last x
n))は、xと等しいリストをreturnします。
この関数は、リストのコピーを作成するのではなく、cdrを適切な要素に変更することにより破壊的に機能するバージョンのbutlastです。
Next: Building Lists, Previous: List-related Predicates, Up: Lists [Contents][Index]