Lispにおけるリスト――いかなるリストであっても――は、実行可能なプログラムである。それを実行すれば(Lispの専門用語ではこれを評価と呼ぶ)、コンピュータは次の3つのうちいずれかの動作をとる。リストそのものを返す以外に何もしないか、エラーメッセージを送るか、あるいはリストの先頭のシンボルを何らかの操作を行うためのコマンドとして扱うかである。(もちろん、通常本当に望むのは、これら3つのうち最後のケースである!)
前節のいくつかの例示リストの前に付けた単一のアポストロフィ ' は、クォート と呼ばれます。これがリストの前にある場合、Lisp
に対してリストをそのまま受け取る以外、何も行わないよう指示します。しかし、リストの前にクォートがない場合、リストの最初の項目は特別な意味を持ちます。それは、コンピュータが従うべき命令となります。(Lisp
では、これらの命令を 関数 と呼びます。)上に示したリスト (+ 2
2) の前にはクォートがなかったため、Lisp は +
がリストの残りの部分に対して何らかの操作(後続の数値を加算すること)を行うよう指示していると解釈します。
GNU EmacsのInfoでこれを読んでいる場合は、次のようなリストを評価する方法があります。以下のリストの右括弧の直後にカーソルを置き、C-x C-eと入力してください:
(+ 2 2)
エコー領域2に数値 4
が表示されます。(今行ったのはリストの評価です。エコー領域とは、テキストを表示またはエコーする画面下部の行のことです。)では、引用符で囲まれたリストでも同様に試してみましょう。以下のリストの直後にカーソルを置き、C-x C-e と入力してください:
'(this is a quoted list)
エコーエリアに (this is a quoted list) が表示されます。
いずれの場合も、行っているのはGNU Emacs内部のLispインタプリタと呼ばれるプログラムへの命令――つまり、式を評価するようにインタプリタに指示を出すことです。Lispインタプリタという名称は、式の意味を考え出し、それを解釈する人間が行う作業を指す言葉に由来しています。
また、リストに含まれないアトム――つまり括弧で囲まれていないアトム――を評価することもできます。ここでも、Lispインタプリタは人間が読みやすい式をコンピュータの言語へと変換します。ただ、この点について説明する前に(変数を参照)、エラーが発生した際にLispインタプリタがどのような処理を行うかについて解説します。