(degrule error
(bar (a?х))
(bar (b?x))
(bar (с?х))
=>)
Результат выполнения этих действий приведен на рис. 13.2.
Появление переменной?х в первом образце правила error определяет допустимые типы этой переменной по ограничениям типов для слота a. Переменная?х может содержать значения либо типа symbol, либо типа integer. Использование переменной?х во втором образце правила добавляет дополнительное ограничение на тип переменной?х. Теперь переменная может принимать значения только типа integer. Указание переменной в третьем образце правила приводит к ошибке, т. к. слот с может содержать значения либо типа symbol, либо типа string, а переменная? х, которая ставится в соответствие слоту с, должна содержать значения типа integer.
Рис. 13.2. Использование шаблона с ограничениями в правиле
Рассмотрим пример 13.3.