(deffunction factorial (?a)
(if (or (not (integerp?a)) (<?a 0)) then
(printout t "Factorial Error!" crlf)
else
(if (=?a 0) then
else
(*?a (factorial (-?a 1))))))
Взаимная рекурсия между двумя функциями требует предварительного объявления одной из этих функций. Для предварительного объявления функции в CLIPS используется конструктор deffunction с пустым списком действий. В следующем примере функция foo предварительно объявлена и таким образом может быть вызвана из функции bar. Окончательная реализация функции foo выполнена конструктором после объявления функции bar.