如何从Prolog中的文件中定义/加载所有子句

时间:2017-06-03 01:06:11

标签: prolog swi-prolog

我正在使用SWI Prolog,我很惊讶在Prolog中找不到明显的方法。我所追求的是类似于子句/ 2但允许未实例化的第一个参数(并且特定于给定文件中的子句,即我不想要整个Prolog库!)。这是我写的所有条款

clauseX(H,B) :-
    current_predicate(P/Arity),
    functor(H,P,Arity),
    absolute_file_name('filname.pl', AbsFileName),
    predicate_property(H, file(AbsFileName)),
    clause(H,B).

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

好的,所以我已经能够稍微缩短它,前两个文字不是必需的,这将返回文件filename.pl中的子句

clauseX(H,B) :-
    absolute_file_name('filname.pl', AbsFileName),
    predicate_property(H, file(AbsFileName)),
    clause(H,B).

但是我仍然担心这个问题的效率以及每次调用子句X时是否必须查阅文件