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

13.2.2 シンプルなラムダ式の例

次の例を考えてみましょう。

(lambda (a b c) (+ a b c))

この関数は、次のようにfuncallに渡すことで呼び出すことができます。

(funcall (lambda (a b c) (+ a b c))
         1 2 3)

この呼び出しでは、変数 a に 1、b に 2、c に 3 が束縛された状態で、ラムダ式の本体が評価されます。本体の評価ではこれら 3 つの数値が加算され、結果 6 が得られます。したがって、この関数呼び出しは値 6 を返します。

なお、この例のように、引数に他の関数呼び出しの結果を指定することも可能です。

(funcall (lambda (a b c) (+ a b c))
         1 (* 2 3) (- 5 4))

これは、引数 1、(* 2 3)、(- 5 4) を左から順に評価します。次に、引数の値 1、6、1 にラムダ式を適用し、値 8 を算出します。

これらの例が示すように、ラムダ式をCARとするフォームを用いて、ローカル変数を生成し、値を代入することができます。かつてのLispでは、この手法がローカル変数を束縛し初期化する唯一の方法でした。しかし現在では、この目的には特殊フォームletを使用する方が明快です(ローカル変数を参照)。ラムダ式は主に、他の関数に引数として渡すための無名関数として(無名関数を参照)、あるいは名前付き関数を生成するためのシンボル関数定義として格納される(関数の命名を参照)ために用いられます。