% Accessor FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH, SEVENTH, EIGHTH, NINTH, TENTH
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)