Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Заключение

Важные моменты, изложенные в этой главе.

1. Списки - это объекты, которые имеют конечное число элементов. Вы

объявляете их, добавляя "*" (звездочку) в конце предварительно опре-

деляемого типа.

2. Список - это рекурсивный комбинированный объект, составленный из

головы и хвоста. Голова - это первый элемент списка, а хвост - это

все остальное (без первого элемента). Хвост списка - всегда спиок.

Голова списка всегда - элемент. Список может иметь 0 или более эле-

ментов; пустой список записывается [].

3. Элементы списка могут быть любыми, включая и другие списки. Все

элементы списка должны принадлежать одному и тому же типу.

Domains-декларация для элементов должна быть такой формы:

domain

elementlist = elements*

elements = .....

где elements = один из стандартных типов (целый, действительный и

т.д) или это набор разных типов, отмеченных функторами (i(целое),

rl(действительное), smb(символьные); и т.д.). В Турбо Прологе нельзя

смешивать типы в списке.

4. Для разделения головы и хвоста в списке используются разделители

(запятая, [ и |); например, список

[a, b, c, d]

может быть записан как

[a|[b, c, d]] или

[a, b|[c, d]] или

[a, b, c|[d]] или

[a|[b|[c, d]]] или

[a|[b|[c|[d]]]] или даже

[a|[b|[c|[d|[]]]]]

5. Работа со списком состоит из рекурсивного выделения головы (и,

обычно, его обработки), до тех пор, пока список не станет пустым.

6. Одна из важных особенностей Пролога в том, что некоторые предика-

ты обладают взаимозаменяемостью неизвестных.

7. Классические предикаты Пролога member и append дают вам возмож-

ность проверить, есть ли элемент в списке, и проверить есть, ли один

список в другом соответственно.

8. Поток параметров - это состояние аргументов предиката при его вы-

зове; они могут быть входными параметрами (i) - которым что либо

присвоено или назначено, или выходными параметрами (o), которые сво-

бодны.

9. В Турбо Прологе есть встроенный предикат findall, который исполь-

зует целевое утверждение, как один из своих аргументов и собирает

все решения для этого целевого утверждения в один список.

10. Составные списки - это списки, содержащие более одного типа эле-

ментов. Так как Турбо Пролог требует, чтобы все элементы в списке

принадлежали одному и тому же типу, то вам необходимо пользоваться

функторами для создания списка, который хранит разные типы элемен-

тов; тип может содержать более чем один тип данных, как аргументы у

функторов.

11. Процесс грамматического разбора работает, уменьшая проблему.

Например, в этой главе входная строка преобразуется в прологовскую

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

Глава 9. Внутренняя база данных турбо пролога

В этой главе мы опишем, как нужно объявлять секции database и как

можно изменить содержание вашей внутренней базы данных.

Внутренняя база данных состоит из фактов, которые вы можете непос-

редственно добавлять и удалять из вашей программы на Турбо Прологе во

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

базу данных в секции database вашей программы и использовать эти предика-

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

predicates.

Для добавления новых фактов в базу данных в Турбо Прологе использу-

ются предикаты asserta и assertz, а предикаты retract и retractall служат

для удаления существующих фактов. Вы можете изменить содержание вашей ба-

зы данных, сначала удалив факт, а потом вставив новую версию этого факта

(или совершенно другой факт). Предикат consult считывает факты из файла и

добавляет их к внутренней базе данных, а save сохраняет содержимое внут-

ренней секции database в файле.

Соседние файлы в папке Документация