Упорядоченный факт состоит из значения типа symbol и следующей за ним последовательности из нуля или более значений типа symbol. Факт заключается в круглые скобки, а значения в последовательности отделяются друг от друга пробелами. Первое поле упорядоченного факта определяет так называемое отношение, или связь факта. Например, факт (father-of jack bill) показывает, что отцом Джека является Билл. Ниже приведено несколько примеров упорядоченных фактов:
Пример 4.10. Упорядоченные факты
(the pump is on)
(altitude is 10000 feet)
(grocery-list bread milk eggs)
Поля в упорядоченном факте могут хранить данные любого примитивного типа CLIPS, за исключением первого поля, тип которого должен быть symbol. Следующие слова зарезервированы и не могут быть использованы в качестве первого поля: test, and, or, not, declare, logical, object, exist и forall.
Неупорядоченные факты
Так как упорядоченный факт хранит информацию, используя строго заданные позиции данных, то для доступа к необходимой информации пользователь должен знать не только какие данные сохранены в факте, но и какое поле содержит эти данные. Неупорядоченные факты (или шаблоны) предоставляют пользователю возможность задавать абстрактную структуру факта путем назначения имени каждому полю. Для создания шаблонов, которые впоследствии будут применяться для доступа к полям факта по имени, используется конструктор deftemplate. Конструктор deftemplate, по сути, аналогичен определениям записей или структур в таких языках программирования, как Pascal или С.
|
|
Конструктор deftemplate задает имя шаблона и определяет последовательность из нуля или более полей неупорядоченного факта, называемых слотами. Слот состоит из имени, заданного значением типа symbol, и следующим за ним списка полей. Как и факт, слот с обеих сторон ограничивается круглыми скобками. В отличие от упорядоченных фактов слот неупорядоченного факта может жестко определять тип своих значений. Кроме того, слоту могут быть заданы значения по умолчанию.