単一化
ちゃんと書くならタイトルは「型推論の一階の単一化」とかになると思うmrsekut.icon と呼ぶ
「同等であるかどうか」は換言すれば「適当な具体型を代入したときに一致することがあるかどうか」
2つの型を引数にとって、それらが等しいかどうかを判定する
code:hs
unify :: Constraint -> Constraint -> TI Bool
unyfyVarは何をしているのか
片方が型変数で、片方が具体型の場合に実行する
例
table:例
入力1 入力2 結果
CVar 1 CInt True
CInt CBool False
CVar 1 CVar 2 True
CLambda (CVar 1) (CVar 2) CLambda (CVar 2) (CVar 3) True
関連
変数が片方にしか存在しない単一化と見ることができる
参考