ISO-Prolog 有参考实现吗?
我确实有INCITS/ISO/IEC 13211-1:1995 (R 2007),所以不需要建议。
编辑
注意:一致性测试 I:语法
让我首先澄清一下您所说的参考实现是什么意思。您的意思是一个示例实现,它被认为代表了对标准的有效解释。永远不清楚这样的实现可能具有什么规范价值——想想导致许多系统循环的 Java 浮点语法错误。
ISO Prolog 没有参考实现。就像没有 C、C++ 或任何其他 ISO/IEC 标准化编程语言一样。请注意,Java 没有被 ISO、IEC、ITU 或 CEN 等任何标准化机构或 ANSI 等任何国家机构标准化;而是由一家公司。正是这家公司提供了参考实现。
此外,Prolog 自 1972 年以来就存在——早在任何标准化发生之前。它是同类和范式中的第一种语言。它很快分裂成几种语法不兼容的不同方言(Prolog 1、Edinburgh、Prolog II 等)。第一个与标准相关的文件之一——Richard O'Keefe 的 Prolog 可评估谓词的提议标准草案于1984 年发布。BSI 始于 1984 年;AFNOR 1985。1987 年 ISO 流程开始,1995 年交付 ISO/IEC 13211-1。
相比之下,Java 是从以前的语言(如 C、C++ 以及其他面向对象的语言)演变而来的,并从它们那里继承了很多东西。它的开发方式完全不同,一家公司强烈捍卫语言免受各种偏差的影响——想想看:即使是手册的副本也被禁止在互联网上提供。
在任何情况下,最符合的 Prolog 系统是:
SICStus Prolog 4.3 beta 1. 不知道会误读任何有效的 Prolog 文本。完全支持 Cor.1、Cor.2。
GNU Prolog 1.4.4(git 版本)。不知道会误读任何有效的 Prolog 文本。算术上的一些差异。否则,Cor.1、Cor.2。
中频/序言 V5。唯一提供严格符合模式的系统(参见 ISO/IEC 13211-1:1995 子条款 5.1 e)。
具体的比较 wrt语法(阅读和写作)让您对这些和其他实现的期望有一些印象。
不,但GNU Prolog非常严格地遵循 ISO Prolog Core标准。另请注意,它提供了一个strict_iso
标志。
还有其他提供良好标准合规性的 Prolog 编译器。
直接来自 SICStus Prolog 手册,4.3.0:
SICStus Prolog 完全符合经技术勘误 1 和 2 扩充的国际标准 ISO/IEC 13211-1(PROLOG:第 1 部分 - 通用核心)。
为了帮助希望编写符合标准的程序的程序员,作为 ISO Prolog 标准一部分的内置谓词和算术函子在本手册中用 [ISO] 注释。
考虑一下:除非您想运行大量由于某种原因无法更新的遗留代码,否则很难证明对 1995 年以来委员会发布的技术文档的合规性,除非以一般方式证明是合理的。您希望使用现代理念和功能运行,而不是遵守古代过早的规范参考(当时 Sun 工作站有 120 MHz CPU 和 24 MiB 的 RAM)。
另见SWI Prolog 手册的定位 SWI-Prolog一章。
为了让人们免于搜索,列表: