« プログラミングを始めるには(6) | Main | プログラミングを始めるには(8) »

July 20, 2014

プログラミングを始めるには(7)

言い忘れていたが、MeadowをフルインストールするとGNU Emacs 21.3版に對應したGNU Emacs Lispマニュアル2.9版の日本語版が入っている。もちろん同バージョンのGNU Emacsマニュアル日本語版も入っている。これらはEmacsのInfoというドキュメントシステムから參照可能だ。"C-h i"とタイプすると起動する。

Ws000072

これがEmacsのInfoを起動したところ。

Ws000073

これがEmacsのInfo。

Ws000074

これがGNU Emacs LispのInfoである。

この2つのドキュメントに限らずEmacsのInfoは元々texinfoという形式のソースになっていて、TeXで印刷可能だ。その製本版は書店で賣っている。以前は何册か買ったが、GNUへの寄付金が含まれているので値段は少々高めだ。GNUへ手っ取り早く寄付したい人には良いかもしれない。書店で賣りものになるほどの分厚い本がこのエディタに同梱されているのだ。

さて、tやnilというシンボルが出てきたが、マニュアルの目次を見るとシンボルのことはもっと後の方で語られている。最初からシンボルに深入りすると都合が惡いということなのだろう。しかしこの2つシンボルの値は變更出來ないということだけ書かれている。

Ws000075

たしかに變更しようとするとエラーになる。

Ws000076

さらにnilというシンボルについていろいろ試してみると、シンボルの値はnil、シンボルのファンクションはvoid(エラー)、シンボルの定義元はnil(通常はそのシンボルが定義されているlispディレクトリ内のソースファイルを指している)、シンボルの名前は"nil"、シンボルのプロパティリストは...意味不明、ということになっているらしい。C言語では變數名や關數名に當たるものであるが、その中にこれだけの情報を持っている。よって、シンボルは單なる變數名や關數名ではない。

Ws000077

ちなみに、こんなことは試す必要はないが...定數の値は變えられないといっても、こんなことは出來るらしい。Lispリーダは123はそのままだとシンボルではなく數値とみなすが、エスケープすると數値ではなくなり、シンボルとして扱うことが出來る。文字列も"123"ではなく\"123"\はOKらしい。ただし、調子に乘ってeqとかcarみたいな基本的なシンボルのファンクションを變更するとEmacsが動けなくなるかもしれないので注意した方が良い。つまり、たとえば(fset 'eq 'equal)というリストを作り出して評價してしまう可能性のあるようなプログラムを書く場合は試驗に細心の注意が必要ということだ。

シンボルのことをどう理解したらよいかを考えていくと、どんどん深みにはまっていくので、たしかにこの場ではこのくらいにしておいた方が良いと思われる。

|

« プログラミングを始めるには(6) | Main | プログラミングを始めるには(8) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/74224/60013271

Listed below are links to weblogs that reference プログラミングを始めるには(7):

« プログラミングを始めるには(6) | Main | プログラミングを始めるには(8) »