как именно такую базу данных: описание отношений частично присутствует в ней в явном виде (факты), а частично - в неявном (правила). Более того, встроенные предикаты дают возможность корректировать эту базу данных в процессе выполнения программ. Это делается добавлением к программе (в процессе вычисления) новых предложений или же вычеркиванием из нее уже

существующих. Предикаты, используемые для этой цели, таковы:

assert

(добавить),

asserta

,

assertz

и

retract

(удалить).

Цель

        assert( С)

всегда успешна, а в качестве своего побочного эффекта вызывает 'констатацию' предложения   С,  т. е. добавление его к базе данных.

Цель

        retract( С)

приводит к противоположному эффекту: удаляет предложение, сопоставимое с  С. Следующий диалог иллюстрирует их работу:

        ?-  кризис.

        no

        ? -  assert( кризис).

        yes

        ?-  кризис.

        yes

        ? -  retract( кризис).

        yes

        ?-  кризис.

        no

Предложения, добавленные к программе таким способом, ведут себя точно так же, как и те, что были в 'оригинале' программы. Следующий пример показывает, как с помощью assert и retract можно работать в условиях изменяющейся обстановки. Предположим, что у нас есть такая программа о погоде:

        хорошая :-

                солнечно, not дождь.

        необычная :-

                солнечно, дождь.

        отвратительная :-

                дождь, туман.

        дождь.

        туман.

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

        ?-  хорошая.

        no

        ?-   отвратительная.

        yes

        ?-  retract( туман).

        yes

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату