(defmodule A (export?ALL))
(defmodule В (export deftempiate?ALL))
(defmodule С (export defglobal foo bar yak))
Вместо ключевого слова?ALL в спецификации экспорта может использоваться ключевое слово?NONE. В этом случае модуль не будет экспортировать либо вообще никаких конструкций, либо не будет экспортировать никаких конструкций заданного типа.
Конструкции defmethod и defmessage-handler никогда не экспортируются явно. Экспорт конструктора defgeneric автоматически приводит к экспорту всех ассоциированных с ним конструкторов defmethod. Экспорт конструктора defclass — к автоматическому экспортированию всех связанных с классом обработчиков (конструкторов defmessage-handler). Конструкции deffacts, definstances и defrules вообще не могут быть экспортированы.
Спецификация импорта в определении модуля служит для определения, какие конструкции из других модулей могут использоваться в данном модуле. Импортироваться могут только следующие конструкции: deftemplates, defclasses, defglobals, deffunctions и defgenerics.
В CLIPS существует три типа спецификации импорта.
Ø Во-первых, модуль может импортировать все конструкции, видимые в некотором заданном модуле. Это осуществляется с помощью ключевого слова import, имени модуля, из которого будет производиться импорт, и ключевого слова?all.
|
|
Ø Во-вторых, модуль может импортировать все конструкции заданного типа, видимые в некотором заданном модуле. Для этого используется ключевое слово import, имя модуля, тип конструкции и ключевое слово?all.
Ø В-третьих, модуль может импортировать некоторые отдельные конструкции заданного типа. Это осуществляется с помощью ключевого слова import, имени модуля, из которого будет производиться импорт, типа конструкции, списка из одного или более имен видимых конструкций заданного типа, которые необходимо импортировать.
В приведенном ниже примере модуль а импортирует все видимые конструкции модуля D, модуль B — все конструкции deftemplate из модуля D, а модуль C — три отдельных конструкции defglobal, также определенные в модуле D.