Определение 5.1. Упорядоченный факт

(данное_типа_symЬо1 [поле]*)

Первое поле факта определяет так называемое отношение, или связь факта (relation). Термин "связь" означает, что данный факт принадлежит некото­рому определенному конструктором или неявно объявленному шаблону. Подробней речь об этом пойдет ниже. Приведем несколько примеров фактов:

Пример 5.1 Упорядоченные факты

(duck is bird)

(schoolboys is Bob Mike)

(Nuke did report)

(altitude is 1000 feet)

Количество полей в факте не ограничено. Поля в факте могут хранить дан­ные любого примитивного типа CLIPS, за исключением первого поля, ко­торое обязательно должно быть типа symbol. Следующие слова зарезервиро­ваны и не могут быть использованы в качестве первого поля: test, and, or, not, declare, logical, object, exist и forall. Эти слова могут использоваться в качестве имен слотов шаблонов, хотя это не рекомендуется.

Так как упорядоченный факт для представления информации использует строго заданные позиции данных, то для доступа к ней пользователь должен знать не только какие данные сохранены в факте, но и какое поле содержит эти данные. Неупорядоченные факты (или шаблоны) предоставляют поль­зователю возможность задавать абстрактную структуру факта путем назна­чения имени каждому полю. Для создания шаблонов, которые впоследствии будут применяться для доступа к полям факта по имени, используется кон­структор deftemplate. Конструктор deftemplate аналогичен определениям записей или структур в таких языках программирования, как Pascal или С.

Конструктор deftemplate задает имя шаблона и определяет последователь­ность из нуля или более полей неупорядоченного факта, называемых также слотами. Слот состоит из имени, заданного значением типа symbol, и сле­дующим за ним, возможно пустого, списка полей. Как и факт, слот с обеих сторон ограничивается круглыми скобками. В отличие от упорядоченных фактов слот неупорядоченного факта может жестко определять тип своих значений. Кроме того, слоту могут быть заданы значения по умолчанию.


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



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