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.1Alé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?