Как уже отмечалось, CLIPS поддерживает не только эвристическую парадигму представления знаний (в виде правил), но и процедурную парадигму, используемую в большинстве языков программирования, таких, например, как Pascal или С. Функции в CLIPS являются последовательностью действий с заданным именем, возвращающей некоторое значение или выполняющей различные полезные действия (например, вывод информации на экран). Как уже упоминалось в гл. 4, в CLIPS существуют внутренние и внешние функции. Внутренние функции реализованы средой CLIPS, поэтому их можно использовать в любой момент. Описание внутренних функций приведено в гл. 15. Внешние функции — это функции, написанные пользователем. Внешние функции можно создавать как с помощью среды CLIPS, так и на любых других языках программирования, а затем подключать готовые, откомпилированные исполнимые модули к CLIPS. Однако эта тема выходит за рамки данной книги. Подробную информацию о создании внешних функций можно найти в книге "CLIPS Reference Manual, Volume II, Advanced Programming Guide". Для создания новых функций в CLIPS используется конструктор deffunction, описанный далее в этой главе.
|
|
8.1. Конструктор deffunction и способы работы с внешними функциями
Конструктор deffunction позволяет пользователю создавать новые функции непосредственно в среде CLIPS. Способ вызова функций, определенных пользователем, эквивалентен способу вызова внутренних функций CLIPS. Вызов функции осуществляется по имени, заданному пользователю. За именем функции следует список необходимых аргументов, отделенный одним или большим числом пробелов. Вызов функции вместе со списком аргументов должен заключаться в скобки. Последовательность действий определенной с помощью конструктора deffunction функции исполняется интерпретатором CLIPS (в отличие от функций, созданных на других языках программирования, которые должны иметь уже готовый исполнимый код).
Синтаксис конструктора deffunction включает в себя 5 элементов:
Ø имя функции;
Ø необязательные комментарии;
Ø список из нуля или более параметров;
Ø необязательный символ групповых параметров для указания того, что функция может иметь переменное число аргументов;
Ø последовательность действий или выражений, которые будут выполнены (вычислены) по порядку в момент вызова функции.