LISPについて
- 作者: 酒井皇治
- 出版社/メーカー: カットシステム
- 発売日: 2004/03
- メディア: 単行本
- クリック: 2回
- この商品を含むブログ (6件) を見る
私がLISPを習得したいと思う理由は、私が使っているxyzzyというテキストエディタがこのLISPで拡張できるからである。xyzzyはとにかく拡張性が高く、xyzzyで編集した文章を、はてなダイアリーにボタン一発でアップロードできる拡張LISPまである。私はカスタマイズするのが好きで、最近独自にxyzzyを拡張したいと思っていた。
さて、LISPであるが、実際に『やさしいLISP入門』を読んでみると、かなり独特な文法を採用していることがわかる。例えば、4+5+6という数学式をLISPで表現すると次のようになる。
(+ 4 5 6)
この例は演算記号が一つだけであるからまだ良いのだが、例えば3×5+6÷2のように複数の演算記号を使うと次のように表現される。
(+ (* 3 5) (/ 6 2))
お分かりだろうか。つまり、LISPでは一つの小括弧内では一種類の演算しか行わないのである。
これが、通常のプログラムで見られるA=3×5+6÷2という代入式となるとこうなる。
(let *1
ちなみに、この式を代表的なプログラミング言語であるC言語で表現すると、
int A;
A=(3*5)+(6/2);
となる。
そしてLISPのもう一つの特徴は、変数が持つことのできる値に限りがなく、なんと小数桁もその例外では無いのである。
先のC言語コードの、int A;という部分は、いわゆる「変数の型宣言」と呼ばれるもので、変数が整数の値のみを持つということを意味している。そして、この整数の値は、一般に上限と下限が設定されている。しかし、LISPは型宣言も必要なく、さらに200000000000など膨大な値も変数に納めることができる(仕様となっている)のである、先に言ったとおり小数値も、0.0000000000000002のような非常に細かい値を扱うことができるのである。物理学等の実験においては非常に微少な値を正確に記録する必要があるので、このような仕様はかなり便利なのだろう。
まだまだLISPには面白い特徴が山ほどあるのだけれど、(分数を実装していることとか)もうちょっと『やさしいLISP入門』を読み解いてから紹介することにする。