% 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)