On Lispを読み返す

最近Clojureに手を出してみようかなぁと思っているので、On Lispを読み返してみた。

On Lisp

On Lisp

日記を調べてみると、On Lipsを買ったのは4年前のようで、買ったはいいが(全く!)理解できなくて積読になっていた本の一つであった。大学には2005年入学だからこれを書いたのはB3の頃のはずで、RやRubyやPerlを触り始めた(そしてJavaを触らなくなってきた)頃。当時の知識からすると理解できなくて無理はないなぁと思う...(オブジェクト指向をようやく理解し始めた付近)。

4年間の間で

  • Gaucheを触って、forを使わないで再帰で表現することを知ったり
    • Gaucheを触っていた頃には気づかなかったけど、それによって参照透明性が確保できることを知ったり
  • Haskellを触って、関数型の凄さを知り、モナドは結局理解できないままだったり(あれぇー)
  • Rをもっと深く知るようになり、関数をオブジェクトとして普通に扱えるようになり、中身がLispで驚いたり
  • NLPをやるようになって、再帰的構造の奥深さを知るようになったり

などなどが変化としてあった。4年も経ってるのか...と考えると成長あんまり早くない気もするけど、前に進んだのは確実だろう。

現状の理解、面白いと思ったところ

On Lisp、まだまだちゃんとは理解できていないが、現状の理解だったり面白いと思ったところを書き出しておこうと思う。

  • マクロの凄さ。構文木を直接書き変えることによってできる柔軟さ
    • メタプログラミングとはまた違ってくるのかな
  • 非決定性。7つの言語 7つの世界でPrologのところを読んでて、「どう解くか」ではなくて、定義を書いたら問題が解けているというのを知って驚いたが、Lispを使ってそれを再現している
  • 最後にオブジェクト指向Lispが紹介されているが、「オブジェクト指向をLispが取り込み始めた」とか書かれているのではなく、「Lispは拡張可能な言語で、その内部でオブジェクト指向が用意に行なえる」というような書き方をしていて、オブジェクト指向を推奨しているのではなく、Lispの柔軟性を示す一つの例として取り上げられていて面白かった