前提知識多め
すごい!!!
とりあえずx: αとおく
{x: α}という情報から,
yの型を推論する
{x: α}で,(+)の引数はIntなのでαはInt
(+)の結果はIntなのでx+1の型はInt
のとき
(変数名→型,式)→
(型変数→型,型)
という型を持つ
({x: α},x+1)→
({α:Int},Int)
という値を持つ
Int
α
α→Int
⇒{α: Int}を代入して,Int→Int
α→α
注意: αは特定の具象型(∀αではない)
ここで一般化(generalize)
αにはどんな型を入れてもよいので,
{id: ∀α. α→α}とする
By pandaman64