Когда вы читаете стандарт, сначала посмотрите на его область применения (domaine d'application, область применения, Anwendungsbereich).Таким образом, применим ли стандарт к тому, что вы хотите знать.А в 13211-1: 1995, 1 Scope есть примечание:
ПРИМЕЧАНИЕ. - Эта часть ISO / IEC 13211 не определяет:
a) размерили сложность текста на Прологе, которая превысит емкость
любой конкретной системы обработки данных или процессора языка
, или действия, которые необходимо предпринять, когда превышены соответствующие пределы
;
b)минимальные требования к системе обработки данных
, способной поддерживать реализацию процессора Prolog
;
...
Строго говоря,это только записка.Но если вы пролистаете стандарт, вы поймете, что таких требований нет.Для аналогичной ситуации см. Также этот ответ .
Кроме того, ошибки ресурсов (7.12.2 ч) и системные ошибки могут возникать на «любой стадии выполнения».
Исторически ранние реализации DEC10 не содержали оптимизаций последнего вызова, и программисты вложили немало усилий, чтобы либо использовать циклы с ошибками, либо включить использование логарифмического стека.
В вашем примере rep
, соответствующая системаможет не хватить места.И это переполнение может сигнализироваться с ошибкой ресурса, но даже это не требуется, так как система может выйти из строя с системной ошибкой.Что меня больше раздражает, так это следующая программа
rep2 :- rep2.
rep2.
Даже эта программа может работать бесконечно, даже не выходя из космоса!И это, хотя никто не отсекает лишнюю точку выбора.
В заключение, напомним, что соответствие стандарту является лишь предварительным условием для работающей системы.