|
||||
|
Назад | Содержание| Вперёд 7. 3. Различные виды равенства В каких...Назад | Содержание| Вперёд 7. 3. Различные виды равенства В каких случаях мы считаем, что два терма равны?До сих пор мы рассматривали три вида равенства вПрологе. Первый был связан с сопоставлением изаписывался так: Х = Y Это равенство верно, если Х и Y сопоставимы.Следующий вид равенства записывался в виде Х is E Такое равенство выполняется, если Х сопоставимсо значением арифметического выражения E. Мытакже рассматривали равенства вида Е1 =:= Е2 которые верны, если равны значенияарифметических выражений Е1 и Е2. Наоборот, если значения двух арифметическихвыражений не равны, мы пишем Е1 =/= Е2 Иногда нам может понадобиться более строгийвид равенства - буквальное равенстводвух термов. Этот вид реализован еще однимвстроенным предикатом, записываемым какинфиксный оператор '==': Т1 == Т2 Это равенство выполняется, если термы Т1 и Т2 идентичны, т. е. имеют вточности одинаковую структуру, причем все соответствующие компоненты совпадают. Вчастности, должны совпадать и имена переменных. Отношение "не идентичны" ,дополнительное к данному, записывается так: Tl \== 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). Назад | Содержание| Вперёд |
|
||
Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх |
||||
|