npt-japanese

% Accessor FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH, SEVENTH, EIGHTH, NINTH, TENTH

UP


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)

副作用

なし。

影響

なし。

例外

なし。

参考

car, nth

備考

firstは機能的にはcarと同じです。 secondは機能的にはcadrと同じです。 thirdは機能的にはcaddrと同じです。 fourthは機能的にはcadddrと同じです。

通常の番号付けは1から開始しますが、 nthによって使われる採番は0開始であり、 次の関係が成り立ちます。

(fifth x) == (nth 4 x)

TOP, Github