我正在使用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).
有更简洁的方法吗?
答案 0 :(得分:1)
好的,所以我已经能够稍微缩短它,前两个文字不是必需的,这将返回文件filename.pl中的子句
clauseX(H,B) :-
absolute_file_name('filname.pl', AbsFileName),
predicate_property(H, file(AbsFileName)),
clause(H,B).
但是我仍然担心这个问题的效率以及每次调用子句X时是否必须查阅文件