Quais significados de "tipo" são usados no padrão?

Na parte um do padrão ISO para Prolog, ISO / IEC 13211-1: 1995, a noção de "tipo" é usada para se referir a coisas diferentes. Isso geralmente leva à confusão. Por exemplo, uma página chamada IsoErrata (versão arquivada, fonte) afirma (observe que esta página não está relacionada à ISO):

7.12.2 e 8.1.2.1

Há uma confusão sobre o que é um "tipo". Parece haver 3 grupos diferentes:

Os listados em 8.1.2.1 e também ocorrem como ValidTypes nos termos type_error em 7.12.2.bAqueles listados em 8.1.2.1 e ocorrem como ValidDomain nos termos domain_error em 7.12.2.cAqueles listados apenas no 8.1.2.1

Além disso, existem ValidDomains na 7.12.2.c que não estão listados na 8.1.2.1, presumivelmente por engano (por exemplo, io_mode).

8.14.3.3.f

O modelo requer o tipoatom_or_atom_list para o terceiro argumento, mas estranhamente o termo de erro necessário aqui étype_error(list,Operator). Isso resulta em (ver exemplos)

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

Ondetype_error(atom,0) outype_error(atom_or_atom_list,0) seria mais apropriado (mas observe queatom_or_atom_list não está entre os ValidTypes listados em 7.12.2!). Para o ECLiPSe, optamos portype_error(list,Op) somente seOp é uma lista imprópria etype_error(atom,Op) E seOp é qualquer outro não-átomo.

Então, em que significados o "tipo" é usado e o que fazer em relação à confusão acima?

questionAnswers(1)

yourAnswerToTheQuestion