Назад | Содержание| Вперёд 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 | Добавить материал | Нашёл ошибку | Наверх