Какие значения «тип» используются в стандарте?
В части первой стандарта 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
любой другой неатом.
Итак, в каких значениях используется «тип» и что делать с вышеупомянутой путаницей?