GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/eintr/setcdr.html ・ emacs-doc.conao3.com

7.6 setcdr

setcdr 関数は setcar 関数と似ていますが、リストの最初の要素ではなく、2番目以降の要素を置き換える点が異なります。

(リストの最後の要素を変更する方法については、nthcdr 関数と setcdr 関数を使用している kill-new 関数 を参照してください。)

この仕組みを確認するには、次の式を評価して変数の値に家畜のリストを代入してください。

(setq domesticated-animals (list 'horse 'cow 'sheep 'goat))

ここでリストを評価すると、リスト (horse cow sheep goat) が返されます:

domesticated-animals
     ⇒ (horse cow sheep goat)

次に、setcdr を2つの引数、すなわちリストを値とする変数名と、最初のリストの CDR が設定されるリストを用いて評価します。

(setcdr domesticated-animals '(cat dog))

この式を評価すると、エコー領域にリスト (cat dog) が表示されます。これが関数から返される値です。私たちが関心を寄せている結果は副作用であり、これは変数 domesticated-animals を評価することで確認できます:

domesticated-animals
     ⇒ (horse cat dog)

確かに、リストは(horse cow sheep goat)から(horse cat dog)に変更されています。リストのCDRは(cow sheep goat)から(cat dog)に変更されています。