¿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 solamenteAdemá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?