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

Часть 2. Стандартные предикаты

Большинство стандартных предикатов Турбо Пролога теперь стали вместо

неудачного завершения выдавать сообщения об ошибках, если их функция не

будет выполнена до конца. Таким образом, все предикаты с побочным эффек-

том дадут ошибку, если побочный эффект не будет завершен. Однако стандар-

тные предикаты с чисто логическим смыслом дадут неудачное завершение, ес-

ли условия будут ложными.

Например, предикат file_string никогда не даст неудачного заверше-

ния; если не выполняется считывание с диска (или запись на диск), то про-

изойдет ошибка. Но readint даст неудачное завершение, если в считываемой

им строке не будет содержаться целое число.

Традиционный взгляд на Пролог подразумевает, что предикаты должны

давать неудачное завершение только в том случае, когда они полностью не

согласуются. В результате это дает ненадежные программы, в которых часть

программы не выполнялась бы, поскольку программист не включил в программу

внешние предложения обработки ошибок. Причины ошибок в таких случаях вы-

являются долго путем трассировки программы.

Из-за отсутствия средств обработки ошибок предикаты давали неудачное

завершение. Теперь в Турбо Прологе это устранено введением механизма ло-

вушек. Предикат-ловушка trap способен в любой ситуации перехватить и со-

ответственно обработать ошибку.