ГЛАВА 12. Модули

CLIPS предоставляет возможность разбиения базы данных и решения задачи на отдельные независимые модули. Для создания таких модулей служит конструктор defmodule. С помощью модулей можно группировать вместе отдельные элементы базы знаний и управлять процессом доступа к этим элементам во время решения некоторой задачи. Подобный процесс управления доступа к данным напоминает механизм пространства имен, используемый в C++, и глобальные и локальные области видимости в языках С и Ada. Однако, в отличие от механизмов в перечисленных выше языках, области видимости в CLIPS строго иерархичны и однонаправлены: если модуль а может видеть данные модуля в, это не означает, что модуль в может видеть данные модуля а. С помощью управления ограничением доступа к данным, содержащимся в различных модулях, при решении сложных за­дач модули могут реализовывать концепцию доски объявлений (blackboard strategy — стратегия решения задач с использованием разнородных источников знаний, взаимодействующих через общее информационное поле). В этом случае отдельный модуль позволяет видеть строго определенный набор фактов и объектов правилам из других модулей. Кроме того, модули используются для управления потоком вычисления правил.

Создание модулей

Как уже упоминалось выше, для создания модулей служит конструктор defmodule.

Определение 12.1. Синтаксис конструктора defmodule

(defmodule <имя-модуля>

[<комментарии>]

<спецификации-импорта-экспорта>*)

<спецификация-импорта-экспорта>::=

(export <элемент-слецификации>) |

(import <имя-модуля> <элемент-спецификации>

<элемент-спецификации>::=?ALL |

?NONE |

<конструктор>?ALL |

<конструктор>?NONE |

<конструктор> <имя-конструктора>

<конструкция>:= deftemplate | defclass | defglobal | deffunction | defqeneric

После своего создания модуль не может быть переопределен или удален (за исключением системного модуля main, который пользователь может один раз переопределить). Единственный способ удалить существующий модуль — выполнить команду clear. Во время запуска системы и при вызове команды clear CLIPS автоматически создает предопределенный системный модуль, указанный ниже.


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



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