Функции. Функцией в CLIPS называется часть кода, имеющая имя и возвращающая полезный результат или выполняющая полезные действия (например

Функцией в CLIPS называется часть кода, имеющая имя и возвращающая полезный результат или выполняющая полезные действия (например, ото­бражение информации на экране). В дальнейшем в книге функциями будут называться, как правило, только функции, возвращающие результат. Функ­ции, не возвращающие результат и выполняющие некоторую полезную работу, как правило, называются командами.

CLIPS оперирует с несколькими типами функций — определенные пользова­телем внешние функции, системные (внутренние) функции, функции, опреде­ленные в среде CLIPS с помощью конструктора deffunction, родовые функции. Определенные пользователем внешние функции и системные функции соз­даются на внешних языках программирования (например, С), и затем под­ключаются к CLIPS на этапе компилирования или функционирования сре­ды. Системные функции созданы разработчиками среды CLIPS и описаны в руководстве. Описания наиболее важных системных функций приведены в гл. 15 и 16.

Конструктор deffunction позволяет пользователям определять новые функ­ции непосредственно в CLIPS. Функции, созданные таким образом, действуют так же, как внешние или системные функции CLIPS, за исключением того, что вместо непосредственного выполнения (как, например, в случае вызова определенной пользователем внешней функции) вызов такой функции обрабатывается встроенным интерпретатором языка CLIPS. Подробней о функциях, созданных с помощью конструктора deffunction, будет расска­зано в гл. 8.

Родовые функции определяются с помощью конструкторов defgeneric и defmethod. Родовые функции позволяют выполнять различные действия, в зависимости от набора аргументов, заданных при вызове функции. Таким образом функция перегружается различными реализациями (подобный ме­ханизм перегрузки функций можно встретить, например, в языке C++). Бо­лее подробно родовые функции описаны в гл. 10.

Вызов функций в CLIPS имеет префиксную нотацию — аргументы функции всегда следуют после имени функции. При вызове имя функции вместе со всеми аргументами заключается в круглые скобки. Аргументы отделяются друг от друга по крайней мере одним пробелом. Аргументами функций мо­гут быть переменные примитивных типов, константы или вызовы других функций. Ниже приведены примеры использования функций + (арифмети­ческое сложение) и * (арифметическое умножение):

Пример 4.9. Использование функций + и *

(+345)

(* 5 6.0 2)

(+ 3 (* 8 9) 4)

(* 8 (+3 (* 2 3 4) 9) (* 3 4))

Выражением в CLIPS называется неименованный отрезок кода, вызываю­щий функции с некоторым набором аргументов. Фактически предыдущий пример состоит из четырех выражений.


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



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