假设我的事实数据库至少填充了:
fact1(A) :- !,A=ok. fact2(B) :- !,B=ok.
如何枚举此数据库中的所有事实?理想情况下,我有一个可以使用的谓词:
?- all_rules( Head :- Tail). Head=fact1(_G100),Tail=(!,_G100=ok) ; Head=fact2(_G101),_G101=ok) ....followed by all other predicates in other modules loaded...
我找到了current_predicate/1,但我无法弄清楚这是在做什么……
解决方法
这取决于您使用的精确Prolog系统.只要您想查看定义,列出/ 0就可以在许多系统中使用.但是列表/ 0只打印文本.子句/ 2通常仅适用于动态声明的谓词.