Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

Глава 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; Мы поможем в написании ваших работ!; просмотров: 411 | Нарушение авторских прав


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

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

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

2458 - | 2274 -


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

Ген: 0.006 с.