Сопоставление структур(matching)

Можно рассматривать каждое утверждение программы как структуру того или иного вида:

parent(bob,tom) – это структура, и тогда

parent- функтор структуры; bob, tom-компоненты структуры.

Компоненты структуры заключаются в круглые скобки;

разделяются между собой запятыми;

между функтором и левой скобкой нет пробела;

количество компонент структуры определяет ее размерность(арность –arity)

Факты, правила, заголовки правил, цели – все они по синтаксису языка являются просто структурами:

ФАКТ - структура для утверждения;

ЦЕЛЬ – структура для вопроса.

ДВЕ СТРУКТУРЫ СОПОСТАВИМЫ, ЕСЛИ

они имеют один и тот же главный функтор;

одинаковую размерность;

компоненты на одинаковых позициях обеих структур сопоставимы

ДВЕ КОМПОНЕНТЫ СОПОСТАВИМЫ, ЕСЛИ:

обе являются константами и представляют собой одинаковый объект;

одна из них переменная;

обе являются структурами, и эти структуры сопоставимы.

СОПОСТАВЛЕНИЕ - это процесс, на вход которого подаются два терма, и идет проверка соответствия этих термов друг другу. Если термы не сопоставимы, то процесс заканчивается неудачей. Если термы сопоставимы, то процесс заканчивается успешно и в обоих термах происходит конкретизация переменных такими значениями, что оба терма становятся тождественными. Например,

dата(D, C, 2012)

| | |

data(D1, october, Y1)

Одна из конкретизаций, которая делает эти термы идентичными:

D=D1 C=october Y1=2012

Нашли конкретизацию переменных, делающих эти

термы тождественными, и процесс завершился успешно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: