Macro FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH, SEVENTH, EIGHTH, NINTH, TENTH
first list => object
second list => object
third list => object
fourth list => object
fifth list => object
sixth list => object
seventh list => object
eighth list => object
ninth list => object
tenth list => object
(setf (first list) new-object)
(setf (second list) new-object)
(setf (third list) new-object)
(setf (fourth list) new-object)
(setf (fifth list) new-object)
(setf (sixth list) new-object)
(setf (seventh list) new-object)
(setf (eighth list) new-object)
(setf (ninth list) new-object)
(setf (tenth list) new-object)
list - リスト、ドットリストと循環リストも受け付けます。
object, new-object - オブジェクト
関数first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenthは、 それぞれリストの1番目、2番目、3番目、4番目、5番目、 6番目、7番目、8番目、9番目、10番目の要素にアクセスします。 具体的には次のようになります。
(first list) == (car list)
(second list) == (car (cdr list))
(third list) == (car (cddr list))
(fourth list) == (car (cdddr list))
(fifth list) == (car (cddddr list))
(sixth list) == (car (cdr (cddddr list)))
(seventh list) == (car (cddr (cddddr list)))
(eighth list) == (car (cdddr (cddddr list)))
(ninth list) == (car (cddddr (cddddr list)))
(tenth list) == (car (cdr (cddddr (cddddr list))))setfは、これらの関数を使うことによって 既存の構成要素を変更することもできます。 上記の等価な関係を用いて同じように適用できます。 例えば次のようになります。
(setf (fifth list) new-object) == (setf (car (cddddr list)) new-object)(setq lst '(1 2 3 (4 5 6) ((V)) vi 7 8 9 10))
=> (1 2 3 (4 5 6) ((V)) VI 7 8 9 10)
(first lst) => 1
(tenth lst) => 10
(fifth lst) => ((V))
(second (fourth lst)) => 5
(sixth '(1 2 3)) => NIL
(setf (fourth lst) "four") => "four"
lst => (1 2 3 "four" ((V)) VI 7 8 9 10)なし。
なし。
なし。
firstは機能的にはcarと同じです。 secondは機能的にはcadrと同じです。 thirdは機能的にはcaddrと同じです。 fourthは機能的にはcadddrと同じです。
通常の番号付けは1から開始しますが、 nthによって使われる採番は0開始であり、 次の関係が成り立ちます。
(fifth x) == (nth 4 x)