Реферат: Программирование на языке CLIPS
;; и тэг (tag) – это может быть произвольный
;; идентификатор.
(deftemplate statement
(field speaker (type SYMBOL))
(multifield claim (type SYMBOL))
(multifield reason (type INTEGER) (default 0))
(field tag (type INTEGER) (default 1))
)
Вместо того, чтобы фокусировать внимение на персонаже, во главу угла я ставлю произносимую им реплику (высказывание), а персонаж отношу к атрибутам высказывания. Я хочу обеспечить возможность представить определенную головоломку в виде экземпляра шаблона, приведенного ниже.
(statement (speaker A) (claim F A))
Этот шаблон можно перевести на «человеческий» язык следующим образом:
«Существует высказывание, сделанное персонажем А, в которм утверждается, что А лжец и тэг этого высказывания по умолчанию получает значение 1». Обратите внимание на то, что в поле reason также будет установлено значение по умолчанию (это значение равно 0), т.е. мы можем предположить, что никаких предшествующих высказываний, которые могли бы подтвердить данное, в этой задаче не было.
Обратите внимание, что поля claim и reason имеют квалификатор multifield, поскольку они могут содержать несколько элементов данных (более подробно об этом рассказано в Руководстве пользователя ).
Однако недостаточно только представить в программе высказывания персонажей – нам понадобиться также выявить суть содержащихся в них утверждений. Далее, приняв определенное предположение о правдивости или лживости персонажа, которому принадлежит высказывание, можно построить гипотезу об истинности или лживости этого утверждения. С каждым таким утверждением свяжем уникальный числовой идентификатор.
;; Утверждение, смысл которого, например,
;; состоит в следующем,
;; Т А . . . . означает, что А правдолюбец;
;; F А . . . . означает, что А лжец.
;; Утверждение может иметь под собой
;; основание (reason) – обычно это тэг
;; высказывания (объекта statement) или тэг
;; другого утверждения (объекта claim).
;; Утверждение также характеризуется признаком scope,
;; который может принимать значение «истина» или «ложь».
(deftemplate claim
(multifield content (type SYMBOL))
(multifield reason (type INTEGER) (default 0))
(field scope (type SYMBOL))
)