Lisp

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,アスキー)
最終更新:2011年03月04日 14:12