ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

型システムのしくみ

型システムのしくみ TypeScriptで実装しながら学ぶ型とプログラミング言語を読みました。

型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語www.lambdanote.com

この本は型システムの実装を見ながら、TAPL(型システム入門 プログラミング言語と型の理論)までの道しるべとなる本です。

www.ohmsha.co.jp

TypeScriptを使って型システムを実装しながら、TAPLへの言及が各所に入っています。 プログラミングが好きでちょっとTAPLは難しかったという人にお勧めです。僕自身もTAPLは目を通したけど何を伝えたいのかさっぱりわからなかったので、この本を読んで良い勉強になりました。

簡単な型システムのための型検査器を動かしながら理解を深めていきますが、各章の最後は新しい機能がついた型検査器を動かしてみようなので、単純に興味だけだとモチベーション維持が厳しい気がします。すべてを理解しようとせず、雰囲気をつかむだけでも良いかなと思います。

処理系を作る上での最初の壁であるパーサーは実装済みのものが提供されているので、そこはすっ飛ばせるのがポイント高いです。一度はトーカナイザー、パーサーも実装したことがあると理解が早いです。そこから理解したい人には、低レイヤーを知りたい人のためのCコンパイラ入門をお勧めしておきます。

www.sigbus.info

第7章の部分型が全然知らなかったところで、構造体の一部の型を使って一意に型が決まるのであればそれを使っちゃおうという機能です。仕組み的に面白いのはわかるのですが、変数xとそのメンバー変数x.baaでは全く違う物だと思うので、役に立つケースよりもバグを入れるリスクが高い雰囲気があります。

全体を通して一つ一つの機能はそれほど難しい概念ではないんだけど、組み合わせると難しいと書いてあって、その辺が難しいところなんだと思う。この本は、その難しい部分には入り込まず、一つ一つの機能をわかりやすく書いてあって型システムを理解する最初の一歩としてとても良い本でした。