let 式 ¶以下の式は、2つの変数 zebra と tiger を生成し、初期値を代入します。let
式の本体は、message 関数を呼び出すリストです。
(let ((zebra "stripes")
(tiger "fierce"))
(message "One kind of animal has %s and another is %s."
zebra tiger))
ここで、varlistは((zebra "stripes") (tiger
"fierce"))です。
2つの変数は zebra と tiger
です。各変数は2要素のリストの第1要素であり、各値は対応する2要素リストの第2要素です。varlist において、Emacs は変数 zebra を値 "stripes"10 に、変数 tiger を値 "fierce"
にそれぞれバインドします。この例では、どちらの値も文字列です。これらの値は、別のリストやシンボルであっても構いません。変数を含むリストの後には、let の本体が続きます。この例では、本体は message
関数を使用してエコーエリアに文字列を出力するリストとなっています。
最後の括弧の後にカーソルを置き、C-x C-e と入力することで、通常通りに例を評価できます。そうすると、エコーエリアに以下のように表示されます。
"One kind of animal has stripes and another is fierce."
前述の通り、message 関数は ‘%s’ を除き、第1引数を出力します。この例では、変数 zebra の値が最初の ‘%s’
の位置に、変数 tiger の値が2番目の ‘%s’ の位置に出力されます。
ジャレド・ダイアモンドは『銃・病原菌・鉄』の中で、「……シマウマは年を重ねるにつれて途方もなく危険な存在になる」と述べているが、ここでの主張は、彼らがトラのように獰猛になるわけではないということである。 (1997, W. W. Norton and Co., ISBN 0-393-03894-2, 171ページ)