これは Haskell Advent Calendar 2017 (その1) 15日目の記事です。 この記事では、以下のような構成で Hindley/Milner の型推論について述べたいと思います。 最初の節では、とても小さな言語を題材にして型システムを形式的に定義してみます。 ここでは、型とはなにか、また、その役割や能力について確認します。 この節のもうひとつの目的は、型システムを形式的に記述するやりかたに慣れることです。 そして次に、Hindley/Milner の型推論について述べ、最後に Haskell による実装を示します。