Многие команды, например undefrule или ppdefrule, используют имя конструкции, которой оперируют. В предыдущих версиях CLIPS имени конструкции было вполне достаточно для однозначной идентификации. Однако после введения модулей стало возможным существование конструкций с одинаковыми именами в двух различных модулях. Модуль конструкции, используемой в команде, может быть задан явно или неявно.
Явное задание модуля выполняется с помощью имени модуля, разделенного с именем конструкции при помощи двойного двоеточия ::. Имя модуля и символ :: называются спецификатором модуля (module specifier). Например, запись main :: find-stuff ссылается на конструкцию find-stuff из модуля MAIN.
Рис. 12.3. Пример использования спецификатора модуля
Неявное задание модуля выполняется с помощью установки текущего активного модуля. Текущий модуль меняется при каждом определении нового модуля или при вызове функции set-current-module. Так как модуль main автоматически добавляется в систему при загрузке системы, а также при каждом вызове функции clear, то main является текущим модулем по умолчанию. Таким образом, имя find-stuff ссылается на конструкцию find-stuff из модуля main. Пример явного и неявного задания модуля в командах приведен на рис. 12.3.