SWI Prolog-从源文件加载的谓词何时生效?

SWI Prolog-从源文件加载的谓词何时生效?,prolog,Prolog,在SWI Prolog中,我希望根据谓词中的输入加载不同的文件,并在谓词中使用此文件中定义的规则,但它不起作用。我想知道是否有一种加载文件的方法,该文件中的规则可以立即生效 我想实现的目标是: rule.pl: classify(X,Y):-X('1'),Y('2'). RuleFile('rule') initClassify(X,Y):-load_files(RuleFile),classify(X,Y). main.pl: classify(X,Y):-X('1'),Y('2').

在SWI Prolog中,我希望根据谓词中的输入加载不同的文件,并在谓词中使用此文件中定义的规则,但它不起作用。我想知道是否有一种加载文件的方法,该文件中的规则可以立即生效

我想实现的目标是:

rule.pl

classify(X,Y):-X('1'),Y('2').
RuleFile('rule')
initClassify(X,Y):-load_files(RuleFile),classify(X,Y).
main.pl

classify(X,Y):-X('1'),Y('2').
RuleFile('rule')
initClassify(X,Y):-load_files(RuleFile),classify(X,Y).

当我调用
initClassify/2
时,它抱怨
classify/2
未定义的过程。

加载文件时,它会警告它看到的任何谓词在没有看到定义的情况下被调用,因此它会警告
classify/2
,因为它在解析文件时没有看到定义。我怀疑您还有其他错误,因为
RuleFile('rule')
是无效语法(而且
X('1')
),您需要首先修复该语法。(在Prolog中,大写字母是为变量保留的。)您看到或了吗?