型推論(パート1)
本連載の第1回では、型推論の基本概念について解説する。型推論は、プログラマが明示的に型を記述しなくても、コンパイラが自動的に式の型を決定する技術である。静的型付き言語における開発効率とコードの安全性を両立させる重要な仕組みとして、多くの現代的なプログラミング言語で採用されている。
背景メモ
- 型推論(type inference)とは、プログラマが変数や関数に「この変数は整数型です」といった型を明示的に書かなくても、コンパイラがコードの使われ方から自動的に型を決定する仕組み。
- 本記事は、静的型付け言語で広く使われる「Hindley-Milner型推論」を解説。これは1970年代にRobin MilnerがML言語向けに発明したアルゴリズムWに端を発し、現在ではRustやHaskell、TypeScriptの一部など多くの現代的言語の基盤になっている。
- 最小の核となるのは「単一化(unification)」——未知の型変数に制約を付けていき、矛盾なく全体の型を求めるプロセス。記事では簡単な算術式から出発し、letバインディング・関数適用・条件分岐へと徐々に拡張しながら仕組みを説明する。
- 対象読者は「TypeScriptでジェネリクスをある程度使えるが、背後でどう動いているかは知らない」といった層。第一回は式の評価(evaluation)との類似から入り、直感的な理解を優先している。
- なぜ重要か:型推論は、コードの安全性(型エラーの早期発見)と記述の簡潔さ(型注釈の省略)を両立する、モダン言語設計の中核技術。仕組みを理解すると、ジェネリクスのエラーメッセージを読み解いたり、より型安全なAPI設計ができるようになる。