Скачиваний:
52
Добавлен:
01.05.2014
Размер:
346.11 Кб
Скачать

1) «На бобах» остались Макдаф и, что уж совсем обидно, Макдональд. - прим.Ред.

11.6. Дополнительные сведения

Отсечение было введено уже в Marseille-Прологе (Colmerauer et al., 1973), и, возможно, это - наиболее важное решение, принятое при разработке Пролога. Прежде чем прийти к окончательному определению, Колмероэ экспериментировал с некоторыми другими конструкциями, соответствующими частным случаям отсечения.

Терминология зеленых и красных отсечений была введена в работе (van Emden, 1982) для того. чтобы разделить допустимые и недопустимые применения отсечения. Постоянно рассматриваются и другие управляющие конструкции, более структурированные, чем отсечения, однако отсечение все еще остается «рабочей лошадкой» программиста. Примерами расширений конструкции «отсечение» являются конструкции if_.then_else (O'Keefc, 1985). способы объявления функциональных, или детерминированных, отношений, а также «слабые отсечения», «разрезы», удаленные отсечения (Chikayma, 1984) и само отношение not, которое, будучи реализовано описанным выше способом, может рассматриваться в качестве структурированного применения отсечения.

Отсечение является также предшественником оператора фиксации,. используемого в параллельных языках логического программирования. Впервые этот оператор был введен в работе (Clark, Gregory, t981) при разработке Реляционного Языка. Оператор фиксации свободен от одного из главных недостатков отсечения нарушения модульности предложений. Отсечение несимметрично, так как оно исключает рассмотрение предложений, расположенных ниже предложения, содержащего отсечение, но не влияет на предложения, расположенные выше. Следовательно, отсечение, входящее в некоторое предложение, влияет на значение других предложений. В отличие от этого оператор фиксации симметричен, поэтому он не может быть использован при реализации отрицания как безуспешного выполнения и не нарушает модульности программы-Были предприняты попытки описать семантику отсечения в Прологе. Один из подходов содержится в работе (Lloyd, 1984).

Оптимизация остатка рекурсии была впервые описана в работе (Warren, 1981) и реализована в Прологе-10. Одновременно эта оптимизация была реализована в системе Пролога. описанной в (Bruynooghe, 1982).

Ссылки на применение отрицания в логическом программировании указаны в аналогичном разделе гл. 5. Примерами корректной реализации правила отрицания, как безуспешное выполнение в диалектах Пролога, являются Пролог-П (van Caneghem, 1982) и MU-Пролог (Naish, 1985a).

Программа same_var и обоснование ее правильности заимствованы из работы (O'Keefe,

1983).

Программа 11.10a, описывающая отношение пенсия, является видоизменением примера Сэма Стила (Sam Steel) из курса Пролога в Эдинбургском университете -отсюда шотландский оттенок. Излишне напоминать о том, что программа не предназначена для точного описания (и не является таковой) шотландской или британской системы социального обеспечения.

Глава 12 Внелогические предикаты

В Прологе имеется ряд предикатов, существующих за рамками модели логи­ческого программирования. Они называются внелогическими предикатами. Такие предикаты в процессе решения логических целей порождают побочный эффект. Существуют три основных вида внелогических предикатов: предикаты, относящиеся к вводу-выводу, предикаты, обеспечивающие доступ к программе и ее обработку, и предикаты для связи с внешней операционной системой. В данной главе рассматриваются предикаты Пролога, связанные с вводом-выводом, и предикаты, обеспечивающие обработку программы. Интерфейс с операционной системой слишком системозависим, чтобы рассматривать его в данной книге. В приложении В приведен список системных предикатов Wisdom-Пролога в операционной системе Unix.

Соседние файлы в папке 1-13