在Prolog的ISO标准的第一部分,ISO/IEC 13211-1:1995中,"类型"的概念用于指代不同的事物.这通常会导致混淆.例如,名为IsoErrata(存档版本,源)的页面声明(请注意,此页面与ISO无关):
7.12.2和8.1.2.1
关于什么是"类型"存在混淆.似乎有3个不同的组:
- 8.1.2.1中列出的那些,也在7.12.2.b中的type_error术语中作为ValidTypes出现
- 8.1.2.1中列出的那些,在7.12.2.c中的domain_error术语中作为ValidDomain出现
- 仅在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
不是7.12.2中列出的ValidTypes!).因此,对于ECLiPSe,我们type_error(list,Op)
只选择 ifOp
是不正确的列表,以及type_error(atom,Op)
是否Op
是任何其他非原子.
那么在哪种意义上使用"类型",以及如何处理上述混乱?
iso-prolog ×1