(clear)
(defmodule A)
(defmodule В)
(defrule foo =>)
(defrule A::bar =>)
(list-defrules)
(set-current-module B)
(list-defrules)
Результат выполнения этих команд приведен на рис. 12.1.
Обратите внимание, что после определения нового модуля он становится текущим (имя текущего модуля можно получить с помощью функции get-current-module). Таким образом, правило foo было добавлено в текущий модуль В, т. к. при его создании модуль не был указан явно, а правило bar добавлено в модуль А, что явно указано в конструкторе. Сообщения, возникшие после определения правил, сообщают об определении в новых модулях фактов initial-fact, необходимых для безусловных правил. После этого, переключая текущий активный модуль с помощью команды set-current-module и используя команду list-defrules, можно убедиться, что правила находятся именно в тех модулях, в которых они должны находиться. Windows-версия CLIPS предоставляет еще один способ просмотра списка определенных пользователем модулей и изменения текущего модуля. Эта возможность реализована с помощью вложенного меню Module, содержащегося в меню Browse. Текущий модуль в этом меню отмечен флажком (рис. 12.2).
Рис. 12.1. Использование модулей
Рис. 12.2. Выбор активного модуля