SWI Prolog-从源文件加载的谓词何时生效?
在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').
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中,大写字母是为变量保留的。)您看到或了吗?