Определение 11.35. Синтаксис функции find-instance

(find-instance <шаблон-набора-объектов> <запрос>)

Например, для поиска первой пары противоположного пола одинакового возраста необходимо выполнить вызов из примера 11.54.

Пример 11.54. Использование функции find-instance

(find-instance ((?m MAN) (?w WOMAN)) (=?m:age?w:age))

В нашем случае функция вернет значение ([Man-1] [woman-1]).

Функция find-all-instance находит все наборы, удовлетворяющие запросу. Она применяет запрос к каждому набору объектов, который соответствует шаблону. Набор, удовлетворяющий запросу, сохраняется в составном зна­чении. Это значение возвращается, если запрос был применен ко всем возможным наборам. Если в каждом наборе п объектов и m наборов удовлетво­ряют запросу, то длина возвращенного значения будет nxm. Первые п полей соответствуют именам объектов первого набора, вторые п — второму набору и т. д. Так как составное значение может занимать достаточно большое количество памяти, в связи с возможностью возникновения комбинаторного взрыва (большого числа возможных вариантов наборов, удовлетворяющих запросу), то эту функцию следует использовать с большой осторожностью.

Определение 11.36. Синтаксис функции find-all-instances

(find-all-instances <шаблон-набора-объектов> <запрос>)

Для того чтобы найти все пары мужчин и женщин одинакового возраста, можно вызвать функцию find-all-instances так, как представлено в примере 11.55.

Пример 11.55. Использование функции find-all-instances

(find-all-instances ((?mMAN) (?w WOMAN)) (=?m:age?w:age))

В нашем случае функция вернет составное значение, равное ([MAN1] [Woman-I] [Man-2] [Woman-2]).

Функция do-for-instance предназначена для выполнения некоторого заданного действия для первого набора, удовлетворяющего запросу. Функция do-for-instance применяет запрос к каждому набору объектов, который соот­ветствует шаблону. Если набор объектов удовлетворяет запросу, выполняется определенное действие и функция немедленно прекращается. Возвращенное значение соответствует результату вычисления действия. Если функция не нашла набор объектов, удовлетворяющий запросу, то возвращается значение false.

Определение 11.37. Синтаксис функции do-for-instance

(do-for-instance <шаблон-набора-объектов> <запрос> <действие>)

В качестве примера использования функции do-for-instance можно привести выражение, представленное в примере 11.56.


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



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