【发布时间】:2017-10-03 05:34:35
【问题描述】:
我正在使用 SWI Prolog,但很惊讶地发现在 Prolog 中没有明显的方法可以做到这一点。我所追求的是类似于 Clause/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).
有更简洁的方法吗?
【问题讨论】:
-
请注意,大多数 Prolog 系统只允许您在动态谓词上使用
clause/2。在最近的 SWI-Prolog 版本的特定情况下,只要将protect_static_code标志设置为false,您就可以在静态谓词上使用clause/2。
标签: prolog swi-prolog