А.2.1.
Факты
Сразу после
запуска CLIPS-приложения на выполнение на экране появится приглашение, извещающее
пользователя, что он работает с интерпретатором.
CLIPS>
В режиме интерпретатора
пользователь может использовать множество команд. Факты можно включить в базу
фактов прямо из командной строки с помощью команды assert, например:
CLIPS>
(assert (today is Sunday))
<Fact-0>
CLIPS>
(assert (weather is warm))
<Fact-l>
Для лучшего
восприятия текста Приложения мы в дальнейшем будем выделять текст, вводимый
пользователем, полужирным шрифтом, а запросы и ответы интерпретатора — обычным
моноширинным шрифтом.
Для вывода
списка фактов, имеющихся в базе, используется команда facts:
CLIPS>
(facts)
f-0
(today is Sunday)
f-1
(weather is warm)
В последних
версиях CLIPS, в частности, в той, которая работает в операционной среде Windows,
такие команды, как facts, можно вызывать с помощью меню. Для удаления фактов
из базы используется команда retract.
CLIPS>
(retract 1)
CLIPS>
(facts)
f-0
(today is Sunday)
Эти же команды,
assert и retract, используются в выполняемой части правила (заключении правила)
и с их помощью выполняется программное изменение базы фактов. Часто приходится
пользоваться и другой командой интерпретатора, clear, которая очищает базу фактов
(как правило, эта команда доступна в одном из выпадающих меню).
CLIPS>
(clear) CLIPS> (facts)
В тексте программы
факты можно включать в базу не по одиночке, а целым массивом. Для этого в CLIPS
имеется команда deffacts.
(deffacts
today
(today
is Sunday)
(weather
is warm) )
Выражение
deffacts имеет формат, аналогичный выражениям в языке LISP. Выражение начинается
с команды deffacts, затем приводится имя списка фактов, который программист
собирается определить (в нашем примере — today), а за ним следуют элементы списка,
причем их количество не ограничивается. Этот массив фактов можно затем удалить
из базы командой undef facts.
CLIPS>
(undeffacts today)
Выражение
def facts можно вводить и в командную строку интерпретатора, но лучше записать
его в текстовый файл с помощью редактора CLIPS или любого другого текстового
редактора. Загрузить этот файл в дальнейшем можно с помощью команды в меню File
либо из командной строки.
CLIPS>
(load "my file")
Однако после
загрузки файла факты не передаются сразу же в базу фактов CLIPS. Команда deffacts
просто указывает интерпретатору, что существует массив today, который содержит
множество фактов. Собственно загрузка выполняется командой reset.
CLIPS>
(reset)
Команда reset
сначала очищает базу фактов, а затем включает в нее факты из всех ранее
загруженных массивов. Она также добавляет в базу единственный системно определенный
факт:
f-0
(initial-fact)
Это делается
по умолчанию, поскольку иногда имеет смысл включить в программу правило start
rule, которое может быть сопоставлено с этим фактом и позволит выполнить какие-либо
нестандартные инициализирующие операции. Однако включать такое правило в программу
или нет — дело программиста.
Можно проследить, как выполняется команда reset, если перед выполнением приведенных выше команд установить режим слежения среды разработки. Для этого нужно вызвать команду Watch из меню Execution и установить в ней флажок Facts.