Next: ボディ・ユニフィケーション
Up: 構造データのユニフィケーション
Previous: 構造データのユニフィケーション
ガードでのユニフィケーションは, 両辺の値の一致を調べるものだが, 構造体
同士の場合は以下のような再帰的な規則になる.
-
まず両辺が全体として同じ型の構造体で, ファンクタ同士なら同じ名前で, 要
素個数も同じであることを確かめる. そうでなければ値は不一致である.
-
次に両者の対応する (同じ要素番号の) 各要素について, この規則を再帰的に
適用する. すべてについて一致するときのみ, 全体が一致するものとする.
要素のユニフィケーションにあたって, 相手が新しく出てきた変数なら, その
変数には対応する要素が渡される. たとえば, 以下のプログラムは第 1 引数
に渡されたコンスの car と cdr を, 第 2, 第 3 の引数に返すような述語の
定義になっている.
carcdr(Cons,Car,Cdr) :- Cons=[X|Y] | Car=X, Cdr=Y.
Next: ボディ・ユニフィケーション
Up: 構造データのユニフィケーション
Previous: 構造データのユニフィケーション
KLIC