Составители:
Рубрика:
30
likes(mary, popcorn). /* Мэри любит кукурузные зерна */
likes(mary, apples). /* Мэри любит яблоки */
Ниже следуют правила, из которых можно сделать вывод о том, что
любит Бет:
likes(beth,X) :- /* Бет любит то, */
likes(mary,X), /* что любит Мэри, */
fruit(X), /* если это фрукт, */
color(X,red). /* и если он красный */
likes(beth,X) :- /* Бет любит
то, */
likes(mary,X), /* что любит Мэри, */
X=popcorn. /* если это кукурузные зерна */
А эти утверждения дают конкретные факты:
fruit(pears). /* персики - фрукт */
fruit(apples). /* яблоки - фрукт */
color(pears, yellow). /* цвет персиков желтый */
color(oranges, orange). /* цвет апельсинов оранжевый */
color(apples, red). /* цвет яблок красный */
color(apples, yellow). /* цвет яблок желтый */
Заметьте, что эти предикаты сами по себе не образуют законченной
программы
на Турбо-Прологе. В следующей главе вы узнаете об остальных
необходимых частях программы.
Ниже дано целевое утверждение, которое используется для выборки
информации из приведенных утверждений:
likes(beth, X).
Эта цель означает "Что любит Beth?". Для того, чтобы ответить на
данный вопрос, внутренние унификационные подпрограммы Турбо-Пролога
ищут факты или
голову правила, сопоставимую с этим целевым утвержде-
нием. Поиск начинается с первого утверждения для отношения likes, которое
содержит три факта о том, что любит Мэри. Турбо-Пролог опробует все ут-
верждения слева направо (сверху вниз). Сопоставление для всех них будет
неуспешным, так как константа beth несопоставима с константой mary.
Внутренние
унификационные подпрограммы Турбо-Пролога переходят
к правилу:
likes(beth, X) :-
likes(mary, X),
fruit(X),
color(X, red).
Переменные, как в голове правила, так и в цели неозначены, так что
цель и голова правила сопоставимы. Так как голова (левая часть) первого
правила сопоставима с целью, то факты правой части становятся подцелями,
которые Турбо
-Пролог должен вычислить, обрабатывая их слева направо.
Вспомним, что Турбо-Пролог рассматривает термы, разделенные запятыми,
как следующие друг за другом, даже если они находятся на разных строках.
likes(mary, popcorn). /* Мэри любит кукурузные зерна */
likes(mary, apples). /* Мэри любит яблоки */
Ниже следуют правила, из которых можно сделать вывод о том, что
любит Бет:
likes(beth,X) :- /* Бет любит то, */
likes(mary,X), /* что любит Мэри, */
fruit(X), /* если это фрукт, */
color(X,red). /* и если он красный */
likes(beth,X) :- /* Бет любит то, */
likes(mary,X), /* что любит Мэри, */
X=popcorn. /* если это кукурузные зерна */
А эти утверждения дают конкретные факты:
fruit(pears). /* персики - фрукт */
fruit(apples). /* яблоки - фрукт */
color(pears, yellow). /* цвет персиков желтый */
color(oranges, orange). /* цвет апельсинов оранжевый */
color(apples, red). /* цвет яблок красный */
color(apples, yellow). /* цвет яблок желтый */
Заметьте, что эти предикаты сами по себе не образуют законченной
программы на Турбо-Прологе. В следующей главе вы узнаете об остальных
необходимых частях программы.
Ниже дано целевое утверждение, которое используется для выборки
информации из приведенных утверждений:
likes(beth, X).
Эта цель означает "Что любит Beth?". Для того, чтобы ответить на
данный вопрос, внутренние унификационные подпрограммы Турбо-Пролога
ищут факты или голову правила, сопоставимую с этим целевым утвержде-
нием. Поиск начинается с первого утверждения для отношения likes, которое
содержит три факта о том, что любит Мэри. Турбо-Пролог опробует все ут-
верждения слева направо (сверху вниз). Сопоставление для всех них будет
неуспешным, так как константа beth несопоставима с константой mary.
Внутренние унификационные подпрограммы Турбо-Пролога переходят
к правилу:
likes(beth, X) :-
likes(mary, X),
fruit(X),
color(X, red).
Переменные, как в голове правила, так и в цели неозначены, так что
цель и голова правила сопоставимы. Так как голова (левая часть) первого
правила сопоставима с целью, то факты правой части становятся подцелями,
которые Турбо-Пролог должен вычислить, обрабатывая их слева направо.
Вспомним, что Турбо-Пролог рассматривает термы, разделенные запятыми,
как следующие друг за другом, даже если они находятся на разных строках.
30
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »
