Скачиваний:
141
Добавлен:
17.06.2016
Размер:
3.31 Mб
Скачать

Новые ограничения по именам

Сейчас добавлены новые ограничения по именам. Если вы получили ошиб-

ку 406 при описании предикатов, или ошибку 450 в вашей clauses секции,

это значит, что вы ошибочно использовали одно из следующих слов:

assert consult free readterm

asserta database global ref_term

assertz db_btree goal refracf

bound db_chains if refracfall

chain_inserta domains ifdef save

chain_insertafter elsedef ifndef term_replace

chain_insertz endef include trap

chain_terms fail or write

clauses findall not writef

constants format predicates

Новые предопределенные домены

Сейчас добавлены новые предопределенные домены:

ref, bt_selector, db_selector, place, bgi_ilist

и тут новые альтернативы для домена file:

stdin, stdout, stderr

Контроль состава параметров шаблона (flow pattern)

Директива компилятора для проведения данной проверки (check_ compio)

была изъята из системы.

Поддержка старых командных клавиш редактора

Если вы желаете использовать клавиши редактора, как они были в 1.x,

вы можете использовать SYS файл OLD.SYS. Если вы поместите следующую

строку в ваш AUTOEXEX.BAT файл, Турбо Пролог всегда будет использовать

OLD.SYS файл:

SET prosys = c:\tprolog2\old.sys

(считается, что c:\tprolog2 путь к OLD.SYS файлу. Вы можете его изменить,

если необходимо).

Ошибочные ситуации в стандартных предикатах

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

щение об ошибках - вместо неудачного завершения - если не могут выполнить

свою функцию. Это означает, что все предикаты выдают сообщения об ошиб-

ках, если не могут быть выполнены. Однако, стандартные предикаты с чисто

логическими значениями завершаются неудачно, если условия ложны.

Например: предикат file_string никогда не завершается неудачно; если

файл не может быть прочитан с диска (или записан), выдается сообщение об

ошибке; однако readint завершается неудачно, если читаемая строка не со-

держит правильного целочисленного значения.

Старый стиль Пролога предполагал, что предикаты всегда завершаются

неудачно, если они не могли быть выполнены. Это влекло за собой ненадеж-

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

программист забывал вставить предложения для отлова ошибки. Это требует

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

ошибку.

Предикаты следовало завершать неудачно (fail), т.к. не было иного

пути поймать ошибку. Это изменено в Турбо Прологе путем введения механиз-

ма ловушек (trap).

Предикат trap всегда сможет выявить ошибки, позволяя вашей программе

достаточным образом реагировать на ошибочные ситуации.

Например:

trap(file_str("file.txt", STR), Err, handlerr(Err))

Если вас не заботит обработка ошибки и вы хотите только привести к

неудаче предикат, вы сможете создать такую ситуацию, используя fail в

предикате trap.

trap(file_str("file.txt", STR, _ , fail)

Соседние файлы в папке Документация