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

1.6.1 内部リストの評価

評価が別のリスト内にあるリストに適用される場合、外側のリストは、自身が評価される際の情報として、最初の評価で返された値を利用することがあります。これが、内側の式が先に評価される理由です。それらが返す値が、外側の式で使用されるためです。

別の加算例を評価することで、この過程を調べることができます。次の式の後にカーソルを置き、C-x C-eと入力してください:

(+ 2 (+ 3 3))

エコーエリアに数字の8が表示されます。

具体的には、Lispインタプリタはまず内側の式 (+ 3 3) を評価して値 6 を返し、次に外側の式をあたかも (+ 2 6) と書かれているかのように評価して値 8 を返します。これ以上評価すべき外側の式はないため、インタプリタはその値をエコー領域に出力します。

キーストローク C-x C-e によって呼び出されるコマンドの名前は、容易に分かります。その名前は eval-last-sexp です。文字 sexp は「記号式」の略であり、eval は「評価」の略です。このコマンドは、最後の記号式を評価します。

試しに、式の直後の次の行の先頭や、式の中にカーソルを置いて、式を評価してみることもできます。

その式の別のコピーがこちらです:

(+ 2 (+ 3 3))

式の直後にある空行の先頭にカーソルを置き、C-x C-e と入力すると、エコーエリアには依然として値 8 が出力されます。次に、カーソルを式の中に配置してみてください。最後から2番目の括弧の直後(つまり、最後の括弧の上に重なるように)に配置すると、エコーエリアには 6 が出力されます!これは、コマンドが式 (+ 3 3) を評価するためです。

次に、数値の直後にカーソルを置きます。C-x C-e と入力すると、その数値そのものが得られます。Lispでは、数値を評価すると、その数値そのものが得られます。これが、数値がシンボルと異なる点です。+ のようにシンボルで始まるリストを評価すると、その名前に紐付けられた関数定義内の命令をコンピュータが実行した結果が返されます。シンボル単体を評価した場合は、次の節で見るように、また別のことが起こります。