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"
(=> (1 2 3 "four" ((V)) VI 7 8 9 10) lst
なし。
なし。
なし。
first
は機能的にはcar
と同じです。 second
は機能的にはcadr
と同じです。 third
は機能的にはcaddr
と同じです。 fourth
は機能的にはcadddr
と同じです。
通常の番号付けは1から開始しますが、 nth
によって使われる採番は0開始であり、 次の関係が成り立ちます。
fifth x) == (nth 4 x) (