Читаем Программирование на языке Пролог полностью

где broken_call(С) - это стандартный предикат, конкретизирующий переменную С ошибочным целевым утверждением. Выполнив целевое утверждение


newhandler("undefined predicate", ask_the_user)


система будет вызывать ask_the_user (спроси_у_пользователя) всякий раз, когда что-либо окажется неопределенным. Например, определив предикаты плотность и нас как в разд. 2.5, но оставив неопределенным предикат

площадь:


плотность(X,Y):- нас(X,Р), площадь(X,A), Y is P/A.

нас(китай,800).

. . .


мы можем наблюдать следующий диалог:


*? плотность(китай,D).

How to continue from площадь(китай,_101)?

* площадь(китай,4).

D = 200

Continue (y/n)?

* y

NO

*? плотность(китай,D).

How to continue from площадь(китай,_101)?

* n.

NO


Другой важный встроенный предикат – это error_protect (Call, Handler), который выполняет целевое утверждение Call в защищенном окружении: когда внутри Call

возникает особая ситуация (не обрабатываемая текущим обработчиком особых ситуаций), выполняется Handler.

Средства отладки

Средства трассировки МПролога аналогичны тем, что имеются в Прологе-10.

Литература

MPROLOG Language Reference Manual

MPROLOG User's Guide /VAX/11-VMS/ MPROLOG User's Guide /VAX/11 – UNIX/ MPROLOG User's Guide /IBM – VM/CMS/ MPROLOG User's Guide /Siemens BS2000/

Getting Started with MPROLOG

Указанная литература может быть получена через институт по координации вычислительной техники (SZKI), г. Будапешт, ВНР.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже