或阿呆のブログ

巷では、武器商人@ダーツで通っています。Python好き好きプログラマーです。芥川龍之介、太宰治が好きです。

Lispで足し算。Lispに括弧が多いということがわかった気がする。Lispの言語仕様は意外とシンプル。書き方は多彩。

LinuxMint14にCLISPをインストール。起動時メッセージが格好良い!!! - oneshotlife_tomの日記
環境はLinuxMint14で、CLISP使ってます。インストール方法は上記。

Lispのオペレーターは前置なんだよね!他の多数の言語と比べると珍しいけれど、メリットもあると思う。

1+2

[1]> (+ 1 2)
3

1+2+3

[2]> (+ 1 2 3)
6

オペランドが複数の場合、オペレーターは一つしか書く必要がない。

括弧で括らない場合

[3]> + 1 2
(+ 1 2 3)
[4]> 
1
[5]> 
2

正しく演算結果が得られていない。()を使わないといけない。

Lispに括弧が多くなる理由

ちょっと触ってみた感じだと、オペレーターが前置であることが関連してくると思われる。オペレーターが前置であることにより、オペランドは可変個複数取れることを意味する。そうすると、対象がどこまでだかわからない。括弧によって、対象の範囲を表現する。必然的に()が多くなるわけだ。

C/C++と比較するとこれは相違点。括弧で括らないでも、オペレーターの優先順位によって処理される。あの、バグの生みやすい、オペレーターの優先順位が無いってのはいいね。Lispの場合は、前述の事情により、どっちにしろ括弧で括る必要があるのだから、左から右へ評価していくことになる。特にオペレーターの優先順位など細かく知っていなくても、理解出来る。

オペレーターが前置であることのメリット

それから、オペレーターが前置であることのメリットもある。例えば、関数の場合、関数は前置。なので、オペレーターと、関数を混在させる場合に、演算の書き方の順番が変わらない。つまり、左から右に書いていけば良いわけだ。その点、一貫性があって良いと思う。

Lisp厨になりそうだ・・・。

ちなみに、これ使って勉強しています。

ANSI Common Lisp (スタンダードテキスト)

ANSI Common Lisp (スタンダードテキスト)