我在Prolog中写了一个小程序.目前我可以打印第一个结果
test(X, 1, 4, 5). write(X).
但如果X的结果不止一个,我该如何打印下一个?
谢谢.
使用故障驱动的循环:
test(X, 1, 4, 5), writeln(X), fail ; true.
或者以更易读的方式使用forall/2
:
forall(test(X, 1, 4, 5), writeln(X)).
没有必要构建所有解决方案的列表(这findall/3
是为了什么),除非您需要此列表而不仅仅是将其打印出来.
如果您的Prolog没有,那么您可以forall/2
通过以下方式自行实现它:
forall(A, B) :- \+ (call(A), \+ call(B)).