Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Листинг 7.3. Реализация отношения findall




findall! х, Goal, Xlist):-

call С Goal), % Найти решение

assertzt queue (X)), \ Внести его э базу данных

fail; % Попытаться найти другие решения

assertzt queue (bottom)), 6 Отметить конец очереди решений

collect [ Xlist). % Собрать решения

collect(L):-

retract! queue(X) ], I, % Извлечь следующее решение
(X == bottom,!, L = И Решения закончились?

L = [X I Rest], collect! Rest)), % В противно.'.' случае собрать остальное

Упражнения

7.8. Примените процедуру bagof для определения отношения powerset (Set, Subsets), которое вычисляет множество всех подмножеств заданного множе­ства (все множества представлены в виде списков).

7.9. Примените процедуру bagof для определения отношения copy_terre(Term, Copy)

такого, что Сору представляет собой терм 1 ~ со всеми переименованными переменными.

Резюме

• В любой реализации Prolog обычно предусмотрен набор встроенных процедур,
позволяющих осуществить несколько полезных операций, которые невозмож­
ны в базовой версии языка Prolog. В данной главе представлен подобный на­
бор предикатов, доступных во многих реализациях Prolog.

Тип терма можно проверить с помощью предикатов, перечисленных ниже.

• var [ X). X —(неконкретизнрованная) переменная.

• nonvarf X), х- не переменная.

• atom! X]. X — атом.

 

• integer [ X). X - целое число,

• float (X). X - действительное число.


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




 

• atomic (X). X является либо атомом, либо числом.

• compound [ X). X - структура.

Для создания или декомпозиции, термов могут применяться следующие пре­дикаты:

Term =.. [ Functor | ArgwmentList]

functor { Term, Functor, Arity) arg( H, Term, Argument)

name{ Atom, CharacterCodes)

Над термами могут выполняться описанные ниже операции сравнения.

X = Y. X и Y согласуются.

X == Y. X и Y идентичны.

X \= Y. X и Y не идентичны.

X =: = Y. Арифметические значения X и Y равны.

X =\= Y.Арифметические значения X и Y не равны.

X < Y Арифметическое значение X меньше Y (к этому же типу относятся операторы -<:, >, >=).

X @< Y Терм X предшествует терму Y (к этому же типу относятся операто­ры @=<, 8>, §>■=),

Программу Prolog можно рассматривать как реляционную базу данных, для обновления которой предусмотрены описанные ниже процедуры.

• assert < Clause). Добавление предложения Clause к программе.

• assertaf Clause). Добавление в начале.

• assertz { Clause). Добавление в конце.

• retract (Clause). Удаление предложения, которое согласуется с предло­
жением Clause.

Все объекты, соответствующие заданному условию, могут быть собраны в спи­сок с помощью описанных ниже предикатов.

• bagof (X, Р, L). L — список из всех X, которые соответствуют условию?.

• setof (X, Р, L), L— отсортированный список из всех X, которые соот­
ветствуют условию Р.

• findall (X, Р, Lb Аналогичен bagof.

repeat — средство управления, которое вырабатывает неограниченное количе­ство вариантов для перебора с возвратами.


 



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






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


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


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

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

Надо любить жизнь больше, чем смысл жизни. © Федор Достоевский
==> читать все изречения...

2376 - | 2051 -


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

Ген: 0.008 с.