我认为 ISO Prolog 应该是通用的子集参考。
但是图书馆是一个大问题。事实上,我在尝试将 SWI-Prolog 片段移植到 YAP 时遇到了问题。
...
:- use_module(library(assoc)).
:- use_module(library(aggregate)).
...
assoc 库在这些系统中的实现方式不同,我无法让 YAP 版本工作(如果我没记错的话, gen_assoc((R, C), GridC, Char) 有不同的语义)。此外,库(聚合)在 YAP 下也存在问题。
为了有条件地在这两个系统中编译,我尝试了
/* File: prolog_impl.pl
Author: Carlo,,,
Created: Jan 26 2013
Purpose: handle SWI/YAP portability issue
*/
:- module(prolog_impl, [swi/0, yap/0, prolog_impl/1]).
swi :- prolog_impl(swi).
yap :- prolog_impl(yap).
prolog_impl(K) :-
F =.. [K,_,_,_,_],
current_prolog_flag(version_data, F).
但当然我对此并不满意。我希望你的问题能给问题带来一些答案。