- Философия, эзотерика:
- Религии:
- Познавательное
(обо всём)
Программа «Города» демонстрирует метод отката после неудачи с предикатом fail. Назначение программы о городах состоит в перечислении названий десяти городов США.
В программе имеется 10 предикатов, каждый из которых является альтернативным утверждением для предиката cities(name). Во время попытки вычислить цель, внутренние унификационные подпрограммы означивают переменную City объектом первого утверждения, который есть ANN ARBOR (название города в США). Так как существует следующее утверждение, которое может обеспечить вычисление подцели cities(City), то указатель отката помещается за первым утверждением. Значение ANN ARBOR выводится на экран.
Предикат fail вызывает неуспешное завершение правила, внутренние унификационные подпрограммы выполняют откат в точку 1, и процесс повторяется до тех пор, пока последнее утверждение не будет обработано.
Использование метода ОПН позволяет извлекать данные из каждого утверждения базы данных. Если в программе содержатся утверждения для 10 вариантов, то результат так же содержит 10 строк. Данные извлекаются из каждого утверждения, так как каждый вариант удовлетворяет подцели cities(City).
domains name=symbol predicates /* Имена городов */ cities(name) /* Правило для вывода результатов */ show_cities clauses /* База имен городов */ cities("ANN ARBOR "). cities("ATLANTA"). cities("NEW HAVEN"). cities("INDIANAPOLIS"). cities("BOSTON"). cities("MESA"). cities("MINEAPOLIS"). cities("SAN ANTONIO"). cities("SAN DIEGO"). cities("TAMPA"). /* Правила для вывода всех результатов из БД */ /* Подправило cities(City) означивает переменную City (город) названием города */ /* Предикат fail вызывает откат к следующему утверждению, которое может обеспечить вычисление цели. */ show_cities :- cities(City), write(" ", City), nl, fail. goal /* 1-я подцель - вывести заголовок */ write("Here are the cities:"),nl, /* 2-я подцель - вывести очередной город из БД */ show_cities. /* Результат ANN ARBOR ATLANTA NEW HAVEN INDIANAPOLIS BOSTON MESA MINEAPOLIS SAN ANTONIO SAN DIEGO TAMPA */
!!Рекомендуем: Семейная Энциклопедия Здоровья ⇒ Что должен знать современный человек? ⇒ Самоанализ. Работа над собой ⇒ Оглавление ⇒ Главная сайта
Обсуждение