generated at
単一化
ちゃんと書くならタイトルは「型推論一階の単一化」とかになると思うmrsekut
2つのが同一または同等であるかどうかを判定する
同一を示すものを統語論的単一化
同等を示すものを意味論的単一化
と呼ぶ
「同等であるかどうか」は換言すれば「適当な具体型を代入したときに一致することがあるかどうか」


型推論の文脈では
2つの型を引数にとって、それらが等しいかどうかを判定する
hs
unify :: Constraint -> Constraint -> TI Bool


unyfyVarは何をしているのか
片方が型変数で、片方が具体型の場合に実行する



入力1入力2結果
CVar 1CIntTrue
CIntCBoolFalse
CVar 1CVar 2True
CLambda (CVar 1) (CVar 2)CLambda (CVar 2) (CVar 3)True
CVar 1CLambda (CVar 2) (CVar 1)occurs checkによりFalse


関連
変数が片方にしか存在しない単一化と見ることができる

参考