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