logo
TurboProlog / Документация / TOM_1

Цели (запросы)

До сих пор, при разговоре о ваших вопросах к Прологу мы использовали

слово "запросы". Отныне же, при ссылке на них, мы будем использовать бо-

лее общий термин: "цель". Это должно быть более удобно, ведь когда вы

запрашиваете Пролог, вы, в действительности, устанавливаете перед ним

цель: "Найти ответ на такой-то вопрос (если он есть):"...

Цели могут быть простыми, как следующие две:

likes (ellen, swimming).

likes (bill, What).

или немного более сложными. В разделе данной главы "Переменные" вы видели

цель, состоящую из двух частей:

likes (Person, reading) and likes (Person, swimming).

Цель, состоящая из двух и более частей, называется составной целью,

а каждая часть такой цели называется подцелью. (Замечание: в правилах

Пролога каждое условие также называется подцелью.)

Часто вам нужно определить пересечение двух целей. Например, в пре-

дыдущем примере вы могли захотеть узнать, кто из людей является родителя-

ми-мужчинами. Вы можете указать Прологу найти решения этого запроса с по-

мощью задания составной цели. Загрузите программу CH03EX04.PRO и нажмите

(для ее запуска) AltR. На приглашение "Goal:" введите следующую составную

цель:

Goal: parent(Person,_) and male(Person).

Пролог попытается вначале решить подцель

parent(Person,_)

просматривая при этом для сопоставления предложения, а затем связывая пе-

ременную Person со значением, возвращаемым предложениями parent. Значе-

ние, возвращенное parent, будет теперь использовано в качестве значения

для решения второй подцели (явялется ли Person (уже связанная) мужчи-

ной?).

male (Person)

Если вы ввели цель корректно, Пролог ответит

Person=bill

Person=joe

2 Solutions