Какие значения «тип» используются в стандарте?

В части первой стандарта ISO для Пролога, ISO / IEC 13211-1: 1995, понятие «тип» используется для обозначения разных вещей. Это часто приводит к путанице. Например, страница называется IsoErrata (архивная версия, источник) утверждает (обратите внимание, что эта страница не связана с ISO):

7.12.2 и 8.1.2.1

Существует путаница в том, что такое «тип». Кажется, есть 3 разных группы:

Те, которые перечислены в 8.1.2.1, а также встречаются как ValidTypes в терминах type_error в 7.12.2.bТе, которые перечислены в 8.1.2.1 и встречаются как ValidDomain в терминах domain_error в 7.12.2.cТе, которые перечислены только в 8.1.2.1

Кроме того, в 7.12.2.c есть ValidDomains, которые не перечислены в 8.1.2.1, предположительно по ошибке (например, io_mode).

8.14.3.3.f

Шаблон требует типatom_or_atom_list для третьего аргумента, но, как ни странно, требуемый термин ошибки здесьtype_error(list,Operator), Это приводит к (см. Примеры)

op(30,xfy,0) =====> error(type_error(list,0))

гдеtype_error(atom,0) или жеtype_error(atom_or_atom_list,0) было бы более уместно (но учтите, чтоatom_or_atom_list не входит в число ValidTypes, перечисленных в 7.12.2!). Поэтому для ECLiPSe мы выбралиtype_error(list,Op) только еслиOp неправильный список, иtype_error(atom,Op) еслиOp любой другой неатом.

Итак, в каких значениях используется «тип» и что делать с вышеупомянутой путаницей?

Ответы на вопрос(1)

Ваш ответ на вопрос