A.2.5.
Определение функций
В языке CLIPS
функции конструируются примерно так же, как в языке LISP (см. главу 4). Существенное
отличие состоит в том, что переменные должны иметь префикс ?, как это показано
в приведенном ниже определении.
(deffunction
hypotenuse (?a ?b)
(sqrt
(+ ( ?a ?a) ( ?b ?b)) )
Формат определения
функции в CLIPS следующий:
(deffunction
<имя функции (<аргумент> ... <аргумент>) <выражение>
<выражение>
)
Функция возвращает
результат последнего выражения в списке. Иногда выполнение функции имеет побочные
эффекты, как в приведенном ниже примере.
(deffunction
init (?day)
(reset)
(assert
(today is ?day)) )
В результате
после запуска функции на выполнение командой CLIPS> (init Sunday)
будет выполнена
команда reset и, следовательно, очищена база фактов, а затем в нее будет включен
новый факт (today is Sunday).