全部読むのが面倒そうなので何となく大まかに読んでみる。
(GNU Emacs 21.3版)
1. はじめに
- 他のプログラム言語でできることは、Emacs Lispでできます。
1.1 警告
- 誤りは皆無ではありません。ふれていない話題も少なからずあります。
1.2 Lispの歴史
- Lispは、人工知能の研究向けに1950年代末にMITで初めて開発
- 1960年代のMITのMACプロジェクトで開発されたMaclispの影響を受けてる
- Common Lispからの影響は少ない
- Common Lispの多くの機能は、必要とするメモリ量を削減するため省いてあるか、単純化してある。
- `cl'ライブラリにより、Common Lispをかなりエミュレート
- Schemeの影響をまったく受けてない
1.3 表記法
1.3.2 nilとt
- Lispでは、シンボルnilには3つの異なる意味
- Lispリーダにとっては、`()'と`nil'は同一(同じオブジェクト、シンボルnil)
- 本書では、空リストを強調するときには()を使い、真理値の偽を強調するときにはnil
(cons 'foo ()) ; 空リストであることを強調する (not nil) ; 真理値の偽であることを強調する
1.3.3 評価の表記法
(car '(1 2)) => 1
- 『(car '(1 2))を評価すると1になる』と読む
(progn (print 'foo) (print 'bar)) -| foo -| bar => bar
1.3.4 結果表示の表記法
- 表示テキストを`-|'で表します。フォームを評価した結果返される値は、後続の行に分けて書く。
1.3.5 エラーメッセージ
- エラーメッセージは、`error-->'で始まる行に示す
(+ 23 'x) error--> Wrong type argument: number-or-marker-p, x
1.3.6 バッファ内のテキストの表記法
- バッファ内のテキストを修正する例題は、『実行前』と『実行後』のテキストを示す
---------- Buffer: foo ---------- This is the -!-contents of foo. ---------- Buffer: foo ---------- (insert "changed ") => nil ---------- Buffer: foo ---------- This is the changed -!-contents of foo. ---------- Buffer: foo ----------
1.3.7 記述形式
- 関数、変数、マクロ、コマンド、ユーザーオプション、スペシャルフォームは、本書では統一した形式で記述
1.3.7.1 関数の記述例
1.3.7.2 変数の記述例
- 変数(variable)は、値を保持するための名前
- ユーザーが変更可能な特定の変数群があり、それらをユーザーオプション(user options)と呼ぶ