Лекции.Орг


Поиск:




Операторы сравнения и проверки на равенство различных типов




Рассмотрим, при каких условиях два терма рассматриваются как равные. До сих пор были представлены три типа операторов проверки на равенство, применяемых в

Глава 7. Дополнительные встроенные предикаты 159


языке Prolog. Первый из них основан на согласовании и записывается следующим '

образом:

х = i

Он принимает истинное значение, если X и Y согласуются. Еще один тип операто­ра проверки на равенство записывается таким образом: X is E

Он принимает истинное значение, если X соответствует значению арифметическо­го выражения Е. Кроме того, рассматривался следующий оператор: Е1 =:= Е2

Он принимает истинное значение, если равны значения арифметических выраже­ний Е1 и Е2. В отличие от этого, если значения двух арифметических выражений проверяются на неравенство, можно применить следующий оператор: El - \= E2

Иногда в программе необходимо применить более строгий тип проверки на равен­ство: буквальное равенство, или идентичность двух термов. Такая проверка на равен­ство осуществляется с использованием еще одного встроенного предиката, который записывается как инфиксный оператор "==": Т1 — Т2

Он принимает истинное значение, если термы Т1 и Т2 идентичны; иными слова­ми, они имеют полностью одинаковую структуру и все их соответствующие компо- J ненты являются одинаковыми. В частности, должны быть также одинаковыми име­на переменных. Обратным по смыслу отношением является отношение проверки на неидентичность, которое записывается следующим образом:

Tl\== T2

Ниже приведены некоторые примеры применения операторов проверки на иден­тичность и неидентичность.

?- f (a, b) == t < a, b).

yes

?- f(a, b) == f(a, X).

ЙО

?- f (a, X) — f { a, Y).

По

?- X \== Y.

yes

?- t< X, f[a,YM == t(X, f{a,Yl).

yes

В качестве примера переопределим отношение count; Terra, List, N)

рассматриваемое в разделе 7.1. Предположим, что в данном случае N представляет собой количество буквальных вхождений терма Term в список List:

count L, 11, 0).

count i Term, [Head L ], K):-

Term — Head,!,

count (Term, L, N1),

N is Bit 1

count (Terra, L, КЗ.

В этой книге уже рассматривались предикаты, предназначенные для сравнения арифметических значений термов, например X - 2 < 5. Еще один набор встроенных предикатов позволяет сравнивать лексикографические значения термов и поэтому определять на термах отношения упорядочения. Например, цель

х @< у



Часть I. Язык Prolog


расшифровывается таким образом: терм X предшествует терму Y. Отношение предше­ствования между простыми термами определяется путем алфавитного или цифрового упорядочения. Отношение предшествования между структурами определяется как предшествование их главных функторов. А если главные функторы равны, то реше­ние принимается на основе определения отношений предшествования между самыми верхними, самыми левыми функторами в субтермах переменных X и Y. Соответст­вующие примеры приведены ниже.

?- paul @< peter. yes

?- f(2)<Kfо;.

yes

1- g{2)!<f(3>.

no

7- g(2) @>= f(3).

yes

? - f! A, g(b), c) @< f t a, h(a),a).

yes

К этому же типу относятся все встроенные предикаты @<, @=<, @>, (а>=, назначе­ние которых очевидно.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 396 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

741 - | 735 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.