next up previous contents
Next: ボディ・ユニフィケーション Up: 構造データのユニフィケーション Previous: 構造データのユニフィケーション

ガード・ユニフィケーション

ガードでのユニフィケーションは, 両辺の値の一致を調べるものだが, 構造体 同士の場合は以下のような再帰的な規則になる.

  1. まず両辺が全体として同じ型の構造体で, ファンクタ同士なら同じ名前で, 要 素個数も同じであることを確かめる. そうでなければ値は不一致である.
  2. 次に両者の対応する (同じ要素番号の) 各要素について, この規則を再帰的に 適用する. すべてについて一致するときのみ, 全体が一致するものとする.

要素のユニフィケーションにあたって, 相手が新しく出てきた変数なら, その 変数には対応する要素が渡される. たとえば, 以下のプログラムは第 1 引数 に渡されたコンスの car と cdr を, 第 2, 第 3 の引数に返すような述語の 定義になっている.

carcdr(Cons,Car,Cdr) :- Cons=[X|Y] | Car=X, Cdr=Y.


next up previous contents
Next: ボディ・ユニフィケーション Up: 構造データのユニフィケーション Previous: 構造データのユニフィケーション



KLIC