型理論の入門に手ごろな一冊
★★★★☆
普段関数プログラミングを行わないような一般のプログラマーが、ML や Haskell のような所謂静的な型を持つ関数型言語を学んだ次に、その理論的背景となっている型理論について学んでみようと思って手にとってみるのに手ごろな一冊です。
理論に手をつける時の最大の障害は、それがどのように役に立つのかが直ぐには見えてこなくて途中で放り出してしまいそうになることです。
本書では「オブジェクト指向の機能の実現方法を示す」という、一般プログラマーに馴染みのある題材を中核にして一本筋を通すことで、このような問題を回避しています。また、動かして試せるぐらいのおもちゃのようなレベルではあるものの、理論として示したものを実際に動作させることのできる処理系の作り方を示してい(たりサポートサイトにそのソースがあ)るのも、とりあえずこの本で学ぼうとする独習者にとっては魅力的だと思います。
その反面、関数プログラミングに十分に馴染みのあるようなプログラマーがさらに高みを目指すために読むには、記述してある内容が保守的過ぎて少々物足りないかもしれません。SML# や Haskell などの最先端をいっているような言語に対する興味が強い方は、章の最後の Note などに少しだけ書かれている話こそを知りたいと思うことが多々あるでしょう。
とはいえ、細々したところまで精読すれば、型理論の全体像をある程度俯瞰することができるので、そういった意味で関数プログラマーにとっても悪くはない入門書だと思います。参照型や例外など関数プログラミングにも関連するトピックもありますし、Types and Programming Languages であって Types and Functional Programming (Languages) ではないことを予め理解していれば、手にとって損はない一冊なのではないでしょうか?
最後に、本書の続編にあたる Advanced Topics in Types and Programming Languages という本が出ているので、この本を読むために前提知識として本書を読むのもありでしょう。続編には、ML のモジュールや(最新の成果を踏まえた)型推論の説明など、関数プログラマーにとっても興味のある題材もありますし。