如何在序言中打印所有数据库事实

tom*_*sky 2 prolog

我在prolog中有一个数据库,我要做的就是通过它的元素进行详细说明并逐个打印。如何才能做到这一点?

fact(is(mike,asthmatic)).
fact(has(andy,highPressure)).
fact(is(mike,smoker)).
Run Code Online (Sandbox Code Playgroud)

我已经写了这个,可以正常工作,但是它从数据库中删除了元素,所以我想不删除就访问它们。

print:- 
  retract(factA(P)),
    write(factA(P)),nl,
    fail.
  print.
Run Code Online (Sandbox Code Playgroud)

gus*_*bro 5

您可能还会考虑使用forall/2谓词:

print:-
 forall(fact(P), writeln(P)).
Run Code Online (Sandbox Code Playgroud)