(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.