「型システムのしくみ - TypeScriptで実装しながら学ぶ型とプログラミング言語」という本のおかげで、はじめて静的方検査を実装することができた、という日記です。
型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語www.lambdanote.com
新卒で中小SIerに入社し、そこからプログラミングをやり出しました(かなりの月日が流れ気がつけば私も小学生の父親に...)。色々なことを学習してきた中でコンパイラの実装というものに憧れてきました。
Parserやインタプリタは実装したことはあるけれど、「型検査」というものの実装が自分にとってはハードルが高く、なかなか手をつけられず。
話は変わって2025年になりまして。今年はRustを学んでみたいなー、インプットのための良い本はたくさんありそうだ、アウトプットは何にしよう→「そうだ、RustでC言語のコンパイラ実装すれば静的型検査のモヤモヤも払拭できて一石二鳥だ!」という気持ちに。
そんなこんなで2025年4月、ラムダノートから「型システムのしくみ - TypeScriptで実装しながら学ぶ型とプログラミング言語」が出版され即購入!
めちゃくちゃ良かった!!この本がなかったら多分挫折してました。出会えて良かった、著者の方、出版社の方、ありがとうございます!
(実装中のRustでCコンパイラはまだまだ実装できてないことがたくさんあるのだけど...)
どんな感じの本か?
ソースコードである文字列を入力し、型検査の結果がOKかNGかを出力する型検査器をTypeScriptで実装していくスタイルです。実際に手を動かしながらちょっとずつ作っていけるのがとても好みです。
例えば、以下の入力
1 + 1
に対する出力はOKだけど、
1 + true
に対する出力はNGとなります。number型とboolean型を加算しているためNGです。
入力されたソースコードを構文解析してASTを構築するところまでの実装は書籍から提供されているため、読者は型検査に集中できるようになってます。
書籍ページの目次を見てもらうと分かりますが、関数型、オブジェクト型、ジェネリクス型など段々と複雑な型検査を実装していくようになっています。
おしまい
型検査に興味あるけどとっかかりがないんだよなぁと感じてる方がいたら、ぜひ読んでみてはどうでしょうか。オススメです。