「つくって学ぶプログラミング言語 RubyによるScheme処理系の実装」がかなり良い

Pocket

達人出版会から出ているつくって学ぶプログラミング言語 RubyによるScheme処理系の実装のタイトルがかなり気になったので、読んでみました。

プログラミング言語をつくる、という何者にも代えがたい体験

この本はLISP方言であるSchemeという言語をRubyで実装してみよう!という本です。Scheme自体はこんな感じのコードになります。

こういったコードをRubyで実行できるように、実装を進めていく本です。

はじめは

という感じの、Rubyで簡単に処理できるデータ構造でコードを表現しながら実装を進めていくのですが、途中からカッコで表現される、Schemeらしいコードに大変身します。

この本のキモは、実装を通してλ式とクロージャの違いをはっきりと理解できることかなーと思います。λ式自体は単なるコードなのですが、クロージャはλ式を評価した時の環境を内包しています。「クロージャって何なのよ」と思っている方は、この本を読みながら実際に手を動かして実装してみることで、かなり本質的な理解を得ることができると思いますよ。

Rubyを使っているのも、良いですね。ここまで処理系を簡単に記述できるのも、Rubyの表現力の強さの賜物のような気がします。処理系を書く、という通常あまりしない体験をしてみることで、普段Rubyを使っている方のRuby力アップにも役立つと思います。

更に、この本をきっかけにSchemeというLISP方言を知ることで、関数型言語の世界に進んでみても良いでしょう。普段Rubyを使っていて関数型言語に興味がある!という方は、SICPを読むより先に、この本から始めるのが良さそうです。