第1回 相撲で学ぶ Emacs Lisp。

今年一年は、Emacs の記事を多く書いてきましたが、1年の纏めとして、今まであえて避けてきた Emacs Lisp についての話をしておきたいと思います。

Emacs Lisp はシンボルの集合、それは大相撲協会が力士の集合であるのと同じ。

Emacs Lisp (以下、Elisp) は、他の多くのプログラミング言語と違い、シンボルというものの集合で出来ています。例えるなら、大相撲協会が力士というものの集合で、出来ているのと同じだと言えます。
プログラムでよくある、変数に値を代入する式を書いてみましょう。

         (setq yokoduna "朝青龍")
; シンボル^    ^シンボル ^シンボル

上の式は、全てシンボルで構成されていますが、それらは、関数であったり、変数であったり、文字列であったりします。
Elisp は、シンボルにカッコやクオートをつけることで、その役割を変えるのです。それは、力士が立場によって、親方であったり、横綱であったり、関脇であったりするようなものなのです。
シンボルで作られた式は S式(えすしき) と呼ばれます。数学の式 (等式とか言うでしょう) と同じ意味合いです。相撲で例えるなら、立ち会いと言えます。

力士は土俵でのみ評価される。

Emacs は、それ自体が S式を評価するための大きな土俵と言えますが、その中の S式という土俵でおこなわれる取り組みに注目してみましょう。
土俵はどこでも作ることができるのですが、*scratch* バッファーと呼ばれる、両国国技館のような場所があるので、今回は、そこで取り組みをしてみます。

(setq yokoduna "朝青龍") ; 末尾で C-j をタイプする
"朝青龍" ; 文字列 朝青龍が返ってくる

yokoduna ; 末尾で C-j をタイプする
"朝青龍" ; 文字列 朝青龍が返ってくる

Elisp では、取り組みのことを「評価」すると言います。評価がおこなわれると、結果が返ってきます。これが決まり手 (返り値) です。
また、取り組みには、白星と黒星がつきものです。Elisp では、「nil」という黒星と「non-nil」という白星があります。nil というのは、黒星を表す特別なシンボルで、nil 以外(0 もです)は全て白星となります。Elisp 界の決まり手は非常にアバウトなのです。

第1回終わり。

とりあえず、力士が取り組みをはじめるところまで書いてみましたが、もし続きを読みたい人がいそうな雰囲気であれば、もう少し続けてみたいと思います。