型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語(電子書籍のみ)
通常価格
¥2,800(税込¥3,080)
特別価格
- PDFのみの提供です
- 紙書籍も必要な場合は、こちらからお得なセットをお求めください
- 紙書籍のみを差額等でお求め頂くことはできません
型システムがようやくわかった!
- 遠藤侑介 著
- 184ページ
- A5判
- ISBN:978-4-908686-20-7
- 2025年4月15日 第1版第1刷
- 本書の解説で利用しているコード(GitHubリポジトリ)
現代の開発環境では、エディタ上でコードを書いている最中から、実行もせずにエラーが判明することがあります。コードの補完でも、文脈に適した候補が魔法のように提示されてきます。こうした機能で中心的な役割を果たすのが「型システム」です。
では、なぜ型システムはプログラムのエラーを早期に発見したり、適切な補完候補を絞り出せたりするのでしょうか? 背景となる数学の理論を教科書で学ぶ以外に、型システムで何ができるのか、どのように機能するかを知る道はないのでしょうか?
本書では、TypeScriptのサブ言語に対する型検査器を実装しながら、実用的なプログラミング言語の機能が型システムでどう実現できるかを見ていきます。AST(抽象構文木)や処理系の実装を通してプログラミングへの理解を深めるように、型検査器の実装を通して「型システムのしくみ」を覗いてみましょう!
本書は『n月刊ラムダノートVol.4, No.3(2024)』に掲載された記事「TypeScriptではじめる型システム」を基に内容を加筆して書籍として刊行したものです。
著者紹介
遠藤侑介
Ruby の開発者(コミッタ)の一人で、Ruby のための型解析器TypeProf を開発している。STORES 株式会社。著書に『あなたの知らない超絶技巧プログラミングの世界』(技術評論社)、『RubyでつくるRuby ゼロから学びなおすプログラミング言語入門』(ラムダノート)。訳書に『型システム入門プログラミング言語と型の理論』(オーム社)。
目次
本書の背景と目的
第1章 型システムとは
1.1 プログラムの未定義動作とは
1.2 歴史的解決策としての「型安全性」
1.3 本書における型システムと型安全性
1.4 実装する型検査器のプログラムについて
第2章 真偽値の型と数値の型
2.1 対象言語と型検査器の仕様
2.2 構文木
2.3 型の定義
2.4 型検査器の実装
2.5 型検査器を動かしてみる
2.6 まとめ
演習問題
第3章 関数型
3.1 型検査器の仕様
3.2 構文木
3.3 型の定義
3.4 型検査器の実装の準備
3.5 型検査器の実装
3.6 型検査器を動かしてみる
3.7 まとめ
演習問題
第4章 逐次実行と変数定義
4.1 型検査器の仕様
4.2 構文木
4.3 型検査器の実装
4.4 型検査器を動かしてみる
4.5 tiny-ts-parserの便利関数紹介
4.6 basic.tsの注意点
4.7 まとめ
演習問題
第5章 オブジェクト型
5.1 型検査器の仕様
5.2 構文木
5.3 型の定義
5.4 型検査器の実装
5.5 型検査器を動かしてみる
5.6 まとめ
演習問題
第6章 再帰関数
6.1 型検査器の仕様
6.2 項と型の定義
6.3 型検査器の実装
6.4 型検査器を動かしてみる
6.5 まとめ
演習問題
第7章 部分型付け
7.1 オブジェクト型の部分型付け
7.2 その他の型の部分型付け
7.3 型検査器の実装
7.4 型検査器を動かしてみる
7.5 まとめ
演習問題
第8章 再帰型
8.1 再帰型が必要になる状況
8.2 再帰型の形式的な表記
8.3 再帰型を型検査でどう扱うか
8.4 項と型の定義
8.5 型検査器の実装
8.6 まとめ
演習問題
第9章 ジェネリクス
9.1 ジェネリクスとは
9.2 TypeScript のジェネリクスを詳しく見る
9.3 型の定義
9.4 項の定義
9.5 型代入の実装(間違った実装)
9.6 ジェネリクスに対応した型の等価判定
9.7 typecheck 関数の実装
9.8 型検査器のテスト
9.9 型代入の実装を修正する
9.10 まとめ
演習問題
おわりに
演習問題の解答
参考文献
索引