¿Qué significados de "tipo" se usan en el estándar?

En la primera parte del estándar ISO para Prolog, ISO / IEC 13211-1: 1995, la noción de "tipo" se utiliza para referirse a diferentes cosas. Esto a menudo conduce a la confusión. Por ejemplo, una página llamada IsoErrata (versión archivada, fuente) afirma (tenga en cuenta que esta página no está relacionada con ISO):

7.12.2 y 8.1.2.1

Existe una confusión acerca de qué es un "tipo". Parece que hay 3 grupos diferentes:

Los que se enumeran en 8.1.2.1 y que también aparecen como ValidTypes en términos de type_error en 7.12.2.bLos que se enumeran en 8.1.2.1 y aparecen como ValidDomain en términos de domain_error en 7.12.2.cLos que se enumeran en 8.1.2.1 solamente

Además, hay ValidDomains en 7.12.2.c que no se enumeran en 8.1.2.1, presumiblemente por error (por ejemplo, io_mode).

8.14.3.3.f

La plantilla requiere el tipoatom_or_atom_list para el tercer argumento, pero extrañamente el término de error requerido aquí estype_error(list,Operator). Esto da como resultado (ver ejemplos)

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

dóndetype_error(atom,0) otype_error(atom_or_atom_list,0) sería más apropiado (pero tenga en cuenta queatom_or_atom_list no está entre los ValidTypes listados en 7.12.2!). Por lo tanto, para ECLiPSe hemos optado portype_error(list,Op) sólo siOp es una lista incorrecta ytype_error(atom,Op) SiOp es cualquier otro no átomo.

Entonces, ¿en qué significados se usa "tipo" y qué hacer ante la confusión anterior?

Respuestas a la pregunta(1)

Su respuesta a la pregunta