Программирование на языке Турбо-Пролог 2.0. Николаев В.Г - 12 стр.

UptoLike

- 12 -
Пример 1: Два терма data(D,M,1993) и data(D1,"май",Y) - со-
поставимы. Результатом их унификации (сопоставления) является
отождествление переменных:
D = D1 M = "май" Y = 1993
Пример 2: Два терма data(D,M,1993) и data(A,B,1990) - несо-
поставимы. Не сопоставимы термы data(X,Y,Z) и point(X,Y,Z).
При унификации списков с одной стороны список рассматривают
как единый объект, с другой как составной - в виде двух частей.
Первую часть списка называют головой (head), а вторую хвостом
(trail). Такое представление описывается шаблоном списка, где
заключенные в квадратные скобки элементы головы и хвоста разделя-
ются вертикальной чертой: [H|T]. При этом голова Н - первый эле-
мент списка, хвост Т - список - оставшаяся часть заданного спис-
ка.
Пример 3: Для списка L = [a,b,c]. Голова: H=a, хвост:
T=[b,c]. То есть L унифицируется с указанным шаблоном [H|T].
Список L может быть сопоставлен со следующими шаблонами:
L = [a,b,c] = [a|[b,c]] = [a,b|[c]] = [a,b,c|[]]
[H|T] [a,H|T] [a,b,H|T]
H = a H = b H = c
T = [b,c] T = [c] T = []
где [] - пустой список.
1.5. Отсечение
ОТСЕЧЕНИЕ (cut - !) - механизм, который предотвращает возв-
рат (попытку пересогласования предикатов-подцелей, объявляя при
этом предикат-цель не согласованным, т. е. как - fail) из тех то-
чек программы, в которых он поставлен.
Причины для включения отсечения в программу:
1. Программа будет выполняться быстрее, т. к. не будет тра-
титься время на попытки найти новое сопоставление целей, о кото-
рых заранее известно, что они не внесут ничего нового в решение.