Логическое программирование на языке Visual Prolog. Солдатова О.П - 46 стр.

UptoLike

46
предиката статической БД - обычный способ различать предикаты
динамической и статической БД.
Следует отметить два ограничения, объявленные в разделе facts :
в динамической базе данных Пролога могут содержаться только
факты;
факты базы данных не могут содержать свободные переменные.
Допускается наличие нескольких разделов facts , тогда в описании
каждого раздела facts нужно
явно указать его имя, например facts –
mydatabase. В двух различных разделах facts нельзя использовать
одинаковые имена предикатов. Также нельзя использовать одинаковые имена
предикатов в разделах facts и predicates. Если имя базы данных не
указывается, то ей присваивается стандартное имя dbasedom. Программа
может содержать локальные безымянные разделы фактов, если она состоит
из
единственного модуля, который не объявлен как часть проекта. Среда
разработки компилирует программный файл как единственный модуль
только при использовании утилиты TestGoal. Иначе безымянный раздел
фактов должен быть объявлен глобальным, то есть как global facts.
В Прологе есть специальные встроенные предикаты для работы с
динамической базой данных:
assert;
asserta;
assertz;
retract;
retractall;
save;
consult.
Предикаты assert, asserta, assertz, - позволяют занести факт в БД, а
предикаты retract, retractall - удалить из нее уже имеющийся факт.
Предикат assert заносит новый факт в БД в произвольное место,
предикат asserta добавляет новый факт перед всеми уже внесенными
фактами данного предиката, assertz добавляет новый факт после всех фактов
данного предиката.
Предикат retract удаляет из БД первый факт, который сопоставляется с
заданным фактом, предикат retractall удаляет из БД все факты, которые
сопоставляются с заданным фактом.
Предикат save записывает все факты динамической БД в текстовый
файл на диск, причем в каждую строку файла заносится один факт. Если
файл с заданным именем уже существует
, то старый файл будет затерт.
Предикат consult записывает в динамическую БД факты, считанные из
текстового файла, при этом факты из файла дописываются в имеющуюся БД.
Факты, содержащиеся в текстовом файле должны быть описаны в разделе
domains.
Пример 48: Написать программу, генерирующую множество 4-
разрядных двоичных чисел и записывающих их в динамическую БД.