型システムのしくみ
型システムのしくみ
- 型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語 – 技術書出版と販売のラムダノート
- LambdaNote/support-ts-tapl: 『TypeScriptではじめる型システム』(n月刊ラムダノート2024, Vol.4, No.3)サポートサイト サポートサイト(なんかタイトルが違うが…)
世の中の感想ブログなど
理論的でも無いが実装的でも無い謎の本 2026-07-31 (金)
再帰型まで読んだが、謎な本だな、という印象。
まず序盤がめちゃくちゃゆっくり進む。
少し考えればA, B, Cを実装しないと駄目だな、とすぐ分かるような時に、 まずCを実装します、みたいなコードが出て、「おや?それじゃ駄目では?」と予想外の事に少し戸惑うと、 実はこれでは駄目です、とか言ってBのコードが出て、さらにこれでは駄目です、といってAのコードが出る。 解説の順番が逆順だったりしていちいち予想と違うので少し戸惑う。
そのおかげで自分で考えなくても順番に見ていくだけで理解出来るので楽といえば楽だが、ページの割に全然進まない。
そして部分型付けあたりから突然難度が上がり、この辺からは自分が読んでも普通に読み応えがある。 なんか前半と後半同じ想定読者なの?という謎がある。
思ったよりも理論的な話をしないのだが、では実装の話をするか、というとそうでも無い。 なんか理論の本を読んで遊び実装をしてみました、みたいなコードの解説で、 しかもその読んでる理論の本は見せないので、これはなんなんだ?という気はする。 しかもめちゃTAPLに言及する。 この進み方じゃないと理解出来ない読者がTAPLなんて読まんだろう…という気がするんだが。
それとType Scriptのサブセットみたいなtoy言語を実装するのだが、このサブセットが中途半端にtoyでいまいち納得感が無い。 なんで関数定義二種類用意するのに関数のhoistすらしないの?みたいな。 toy言語としてうまく閉じたサブセットになっていないというか、 ルールに納得感が無い。 しかも別にどっちでもいいような事でもType Scriptと違うルールを作ったりして、理由がTAPLがそうだから、とか書いてある。 じゃあなんでTypeScriptとかいう変態言語選んだんやねん!という気分になる。 Javaとかgoのサブセットのtoy言語で良かったんじゃないか。 まぁIRがあって後からつける、という方が型と関係ない言語処理系の部分をスキップしやすいからなんだろうけれど。 全然TypeScript愛を感じない。自分も別にTypeScript愛がある訳じゃないのでいいけれど、なんで?という気はしてしまう。
そういう訳で誰向けの本かは良く分からないが、前半はすぐに読み終わるし、部分型づけからは参考になる部分もあるので、 後半だけのつもりで読んでいけばまぁ悪くないかな、という気もする。 本を買うほどのものでは無いとも思うが、後半の記事を読んで、Type Scriptの型検査器のコードを参考にするお布施と思えば、まぁいいか、とは思っている。
それにしてもなんでTAPL TAPL言うんだろうね?普通にtiger bookの型づけのあたりとかの方が対応させた方がいいと思うんだが。
購入 2026-07-30 (木)
Nushellみたいな型システムをもったembed言語向けトランスパイラを作りたいなぁ(embed用のシェルのような何か)と思い、 ググっていたらこの本の実装が引っかかる。
実装を参考にするなら本も買ってあげる方が良かろう、という事で買う事に。3000円くらい。
自分は虎本の型のあたりは真面目に読んでAlgrithm-Wの論文も読んで自分で2回くらい似たのを実装しているので、 実装経験はそれなりだが、TAPLとかは読んでない。