logo search
TurboProlog / Документация / TOM_2

Раздел базы данных (database).

Раздел базы данных database объявляет предикаты также, как это дела-

ет раздел predicates. Однако, предикаты в разделе database могут содер-

жать только факты без переменных. Эти факты могут быть вставлены во время

выполнения программы посредством assert, asserta, assertz или consult, и

вы можете их снова переместить посредством retract или retractall. Вы мо-

жете иметь в программе множество разделов database; некоторые из них мо-

гут быть глобальными, а некоторые локальными. Вы можете давать имена раз-

делам database в вашей программе, и каждое имя должно быть уникальным

внутри модуля. Если вы не даете имя разделу database, компилятор по умол-

чанию задаст ему имя dbasedom (это обеспечивает совместимость с Турбо

Пролог 1.x). Вы можете вставить determ перед предикатом базы данных, если

вы знаете, что для этого предиката будет только один факт. Это заставляет

компилятор производить лучший код, и вы не получите предупреждения о не-

детерминистичности при вызове такого предиката. Это полезно для флагов,

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

Когда объявлен раздел database, компилятор внутренне объявляет соот-

ветствующий домен с таким же именем, как у раздела database; это позволя-

ет предикатам обрабатывать факты как термы.

Форма раздела database:

[globl] database [-<имя базы данных>]

[determ] dbpred1 (...)

dbpred2 (...)