Lisperになろうの巻

はてなブックマーク経由でhttp://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3aScheme%a5%d7%a5%ed%a5%b0%a5%e9%a5%de%a4%ce%a5%ec%a5%d9%a5%eb10を見て少し面白そうだったのでLispを触ってみる。.emacsでしか見たことないけど、たぶんLispはすごい。面接で「Lisp使えます」なんて言ったら即採用される。で昨日まで実家に帰っていてPCをほとんど使えない状況だったので、とりあえず本を読もうということでこれを買ってきて1章と2章をざっと読んだ。

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

サルでもわかるScheme」みたいな感じの方がよかったんだけど丸善津田沼店にはLispを扱う本がこれしかなくて、前提とする知識も特にないみたいだしまあいいかなということで。なんか今調べたら英語版はWebで公開されているらしい。むむー。
1章は「1 + 2」 は 「(+ 1 2)」と書きますよとか、JavaScriptみたく関数も変数と同じように扱えますよとか、そういう基本的な話。ループには全部再帰を使うみたいだけど、例題にある数学的なものならともかく、現実の対象でそんなうまくできるのかな。できるんだろうけど。
2章はデータ構造の話で、treeとかいろんな数とかを扱う。再帰が得意なのでCompositeな構造とは相性がよかろう、と。データの表現の仕方がすごく素直で直感的な感じがする。そういうお題だからなのかなんなのか。あと実装とインターフェースは分けろとか各粒度で独立のレイヤーをとかそういうよくある話。ここで言っているdata-directed-programmingってのはオブジェクト指向前史って感じで、そういうのが組み込まれてる現代的な言語を使った方がよさそうだなあ大丈夫かなあSchemeと思った。
まだまだLispの真髄には至っていない様子。つづく。