Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Различные виды равенства



В каких случаях мы считаем, что два терма равны? До сих пор мы рассматривали три вида равенства в Прологе. Первый был связан с сопоставлением и записывался так:

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).

?- 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...