コンスセルの car ポインタと cdr ポインタは最終的に(訳注:ultimately) setcar と setcdr で変更されます (本当?? それらをリストする必要は)。コンスセルを変更する のに役立つ(その他の) primitive に関してはセクション 6.5 [delq]、ページ 56 を参 照して下さい。
Function: setcar cons object
この関数は、コンスセルの car ポインタをオブジェクトで置き換えます。結果は cons ではなく object です。
(setq x '(1 2)) => (1 2) (setcar x '4) => 4 x => (4 2)
Function: setcdr cons object
この関数は、コンスセルの cdr ポインタをオブジェクトで置き換えます。結果 は、 cons ではなく object です。
(setq x '(1 2)) => (1 2) (setcdr x '(4)) => (4) x => (1 4)
----------------
CN: Common Lisp における関数 rplaca, rplacd は setcar, setcdr に似ていますが、 これら Common Lisp の関数はコンスセルを返す一方、setcar, setcdr は car や cdr を返します。
----------------
Function: nconc &rest lists
この関数は、 lists の(全ての)要素を含むリストを返します。 append とは異な り、 lists はコピーはしません。 lists の各々の要素の(最後の) cdr ポインタ が次のリストを指すよう変更します。最後のアーギュメントは何であってもかまい ません。セクション 6.2 [append]、ページ 51 参照。
(setq x '(1 2 3)) => (1 2 3) (nconc x '(4 5)) => (1 2 3 4 5) x => (1 2 3 4 5)
Function: reverse list
この関数は、 list の要素を逆順に持つリストを(新しく)作ります。 list は変更 しません。
(setq x '(1 2 3 4)) => (1 2 3 4) (reverse x) => (4 3 2 1) x => (1 2 3 4)
Function: nreverse list
この関数は、 list の要素を逆順にして返します。しかし reverse とは異なり、 list の cdr ポインタを変え、大きく(訳注:destructively) 変更します。結果は list の最後のコンスセルへのポインタで、(一般に) list はそれ自身の nreverse とは eq ではありません。
(setq x '(1 2 3 4)) => (1 2 3 4) x => (1 2 3 4) (nreverse x) => (4 3 2 1) x => (1)
Function: sort list predicate
この関数は、 preficate を用いて要素を比較することで list をソートします。 ソートされたリストを返します。
predicate は 2つのアーギュメントを持つ関数でなくてはいけません。これは list 中の 2つの要素を持って呼ばれます。小さい順にソートするためには、 predicate が、最初の要素が 2 番目の要素 "より小さい" の場合 t を、そうでな い場合 nil を返すようにしなくてはいけません。
それらがすでに順序通りそろっていることを predicate が示す場合、sort はその (全ての) 2 要素間におけるもとの順序関係を保持しなくてはいけません。
sort は cdr ポインタを変えることで list を変更します。 (...)
(setq nums '(1 3 2 6 5 4 0)) => (1 3 2 6 5 4 0) (sort nums '<) => (0 1 2 3 4 5 6)
nums => (1 2 3 4 5 6)