Определение 12.2. Предопределенный конструктор модуля main

(defmodule MAIN)

Все предопределенные системные классы принадлежат системному модулю main, однако нет необходимости экспортировать или импортировать сис­темные классы в другие модули, они всегда находятся в области видимости определенных пользователем модулей. Предопределенный системный мо­дуль main не импортирует и не экспортирует никаких конструкций. Однако, в отличие от других модулей, пользователь может один раз переопределить модуль main после запуска системы или выполнения команды clear.

Определения модулей в конструкторах

Для определения, в какой модуль будет помещена та или иная конструкция языка, созданная соответствующим конструктором, в конструкторе необхо­димо указать имя модуля. Конструкторы deffacts, deftemplate, defrule, deffunction, defgeneric, defclass и definstances для определения имени модуля позволяют включать его в имя соответствующей конструкции. Конструктор defglobal принимает имя модуля в специально отведенное для этого поле, которое следует сразу за ключевым словом defglobal. Конструктор defmessage-handier принимает имя модуля как часть определения класса, с которым связывается сообщение. Конструктор defmethod принимает имя модуля как часть определения родовой функции, которой принадлежит данный метод. Например, все приведенные ниже конструкторы будут помещены в модуль DETECTION.

Пример 12.1. Применение спецификации модуля

(defrule DETECTION::Find-Fault

(sensor (name?name) (value bad))

=>

(assert (fault (name?name))))

(defglobal DETECTION?*count* = 0)

(defmessage-handler DETECTION::COMPONENT get-charge ()

(*?self:flux?self:flow))

(defmethod DETECTION::+ ((?x STRING) (?y STRING))

(str-cat?x?y))

Выполните следующую последовательность действий:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: