Emacs Lisp ≡ S式の集合
S式(フォーム)を評価(プログラムの実行)することで動作する
S式(s-expression)
S式はアトム(atom)とリスト(list)によって構成される
- アトム
いわゆる単語と呼ばれるものであり、「不可分」なもの。- 数値(numbers)
- 文字列(string)
- シンボル(symbols)
- リスト(コンスセルを数珠繋ぎにしたもの)
アトムを()で括ったもの。アトムは空白で区切り、括弧のすぐ隣にあってもよい。
何も含まない場合()は空リスト(empty list)と呼ぶ。
数値
整数型と浮動小数点型がある。整数型の範囲は -268435456 ~ 268435455(-2^28 ~ 2^28 -1)
文字列
"で囲む。
例)"abc"
\は特別な意味を持っている
- \n:改行
- \": "そのもの
- \\: \そのもの
ASCIIに無い文字(=;:など)の場合、[]で囲む
(global-set-key [?\C-;] 'dabbrev-expand)
シンボル
シンボル ≡ 一意的な名前 シンボルに値をセットすることで変数にすることができる。
例)abc,find-file,1+,\
※t(真),nil(偽)は値をセットすることはできない。
コンスセル
コンスセル ≡ S式のペア、(要素(car).要素(cdr)) i.e. 要素の間にドットを付けて、()で囲んで表記
例)(1.3)
リスト
コンスセルの要素car,cdrに参照をつけたもの
例) (1.(2.(3.nil))) ⇔ (1 2 3)
※cdr が nil なコンスセルは1要素のリスト i.e. (1.nil) ⇔ (1)
プログラムの実行
Emacs内のLispインタープリタに指令する場合、C-x C-eとタイプすることでリストを評価する。
例) (+ 2 2) カーソルをリストの後ろに位置し、C-x C-e エコー領域内に 4 と出る
クオート(quote)
リストの直前に付けた1つのアポストロフィ「'」をクオート(quote)と呼ぶ。
そのリストに対して評価を行わず、字面通りに扱うことを意味する。
例) '(this is a quoted list) 評価すると (this is a quoted list) と表示される。
前置記法
他の言語:関数名(引数1,引数2...)
Lisp:(関数名 引数1 引数2...)
中置記法と前置記法
| 中置記法 | 前置記法 |
| 1 + 2*3 | (+ 1 (* 2 3)) |
| 1*2 + 3 | (+ (* 1 2) 3) |
参考文献
- Emacsテクニックバイブル~作業効率をカイゼンする200の技~(るびきち,2010,技術評論社)
- EmacsLispプログラミング入門(著 Robert J. Chassell,訳 大木敦雄,1998,アスキー)