Требования к пространству / времени для соответствия процессору ISO-Prolog - PullRequest
1 голос
/ 12 апреля 2019

Все реализации функционального языка программирования обязаны выполнять всякий раз, когда это применимо.

Изо-пролог есть ли это и / или аналогичные требования?

Мне ясно, что функции процессора Prolog, такие как индексация главного функтора первого аргумента и сборка атомарного мусора , широко распространены, но не предписано стандартом ISO.

Но как насчет ?

Убедитесь, что какая-то система Prolog получаетсемантика верна, но не гарантирует, что ...

rep.
rep :- !, rep.
rep.

?- rep, false.

... может работать вечно с постоянным пространством стека?

Может ли эта система по-прежнему соответствовать стандарту ISO-Prolog?

1 Ответ

3 голосов
/ 12 апреля 2019

Когда вы читаете стандарт, сначала посмотрите на его область применения (domaine d'application, область применения, Anwendungsbereich).Таким образом, применим ли стандарт к тому, что вы хотите знать.А в 13211-1: 1995, 1 Scope есть примечание:

ПРИМЕЧАНИЕ. - Эта часть ISO / IEC 13211 не определяет:

a) размерили сложность текста на Прологе, которая превысит емкость
любой конкретной системы обработки данных или процессора языка
, или действия, которые необходимо предпринять, когда превышены соответствующие пределы
;

b)минимальные требования к системе обработки данных
, способной поддерживать реализацию процессора Prolog
;

...

Строго говоря,это только записка.Но если вы пролистаете стандарт, вы поймете, что таких требований нет.Для аналогичной ситуации см. Также этот ответ .

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

Исторически ранние реализации DEC10 не содержали оптимизаций последнего вызова, и программисты вложили немало усилий, чтобы либо использовать циклы с ошибками, либо включить использование логарифмического стека.

В вашем примере rep, соответствующая системаможет не хватить места.И это переполнение может сигнализироваться с ошибкой ресурса, но даже это не требуется, так как система может выйти из строя с системной ошибкой.Что меня больше раздражает, так это следующая программа

rep2 :- rep2.
rep2.

Даже эта программа может работать бесконечно, даже не выходя из космоса!И это, хотя никто не отсекает лишнюю точку выбора.

В заключение, напомним, что соответствие стандарту является лишь предварительным условием для работающей системы.

...