我在 Prolog 中定义过程时遇到问题。我有两个源文件,想用它们来咨询 Prolog 引擎。这可以通过调用 Prolog 作为 swipl -g “['1.pl','2.pl'] 来完成。
这两个文件都是由另一个用另一种编程语言编写的程序生成的,我无法事先预测文件的确切内容。
问题是在其中一个文件中总是有一条规则
predicate1(X):-predicate2(X).
但是,有时规则
predicate2(something):-body
两个文件中都不存在,并且在执行谓词 1 的某些查询时出现错误“谓词 2”未定义。
如果我包括该行
:- dynamic(predicate2/2).
进入其中一个文件,只有在另一个文件中没有定义 predicate/2 时才有帮助(否则我会得到类似“你真的确定要重新定义 predicate2/2 吗?”。在这里我不想重新定义一些东西保存另一个文件中的数据。
所以,我不知道如何使谓词“定义”。我需要 SWI-Prolog 或 SICStus Prolog 的解决方案。(不幸的是,这些版本没有定义谓词的部分,如视觉 Prolog)