Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В каких случаях мы считаем, что два терма равны? До сих пор мы рассматривали три вида равенства в Прологе. Первый был связан с сопоставлением и записывался так:
X = Y
Это равенство верно, если X и Y сопоставимы. Следующий вид равенства записывался в виде
X is E
Такое равенство выполняется, если X сопоставим со значением арифметического выражения E. Мы также рассматривали равенства вида
Е1 =:= Е2
которые верны, если равны значения арифметических выражений Е1 и Е2. Наоборот, если значения двух арифметических выражений не равны, мы пишем
Е1 =/= Е2
Иногда нам может понадобиться более строгий вид равенства - буквальное равенство двух термов. Этот вид реализован еще одним встроенным предикатом, записываемым как инфиксный оператор '==':
Т1 == Т2
Это равенство выполняется, если термы Т1 и Т2 идентичны, т.е. имеют в точности одинаковую структуру, причем все соответствующие компоненты совпадают. В частности, должны совпадать и имена переменных. Отношение "не идентичны", дополнительное к данному, записывается так:
T1 \== T2
Приведем несколько примеров:
?- f(a, b) == f(а, b).
yes
?- f(a, b) == f(a, X).
nо
?- f(a, X) == f(a, Y).
no
?- X \== Y.
yes
?- t(X, f(a, Y)) == t(X, f(a, Y)).
yes
Давайте в качестве примера переопределим отношение
счетчик(Терм, Список, N)
из разд. 7.1. Пусть на этот раз N будет числом буквальных вхождений Терм'а в Список:
счетчик(_, [], 0).
счетчик(Терм, [Голова | L], N):-
Терм == Голова,!,
счетчик(Терм, L, N1),
N is N1 + 1;
счетчик(Терм, L, N).
Дата публикования: 2015-10-09; Прочитано: 363 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!