如何实现rule1成功iff rule2返回两个或更多结果?
rule1(X) :-
rule2(X, _).
Run Code Online (Sandbox Code Playgroud)
如何计算结果,然后设置何时成功的最小值?
我如何计算结果,然后设置最小值何时为真?
目前尚不清楚结果的含义.所以我会做一些猜测.结果可能是:
一个办法.例如,目标member(X,[1,2,1])有两个解决方案.不是三个.在这种情况下,请考虑使用任一setof/3或类似的谓词.无论如何,setof/3在解决您遇到的问题之前,您应该先了解.
一个答案.目标member(X,[1,2,1])有三个答案.目标member(X,[Y,Z])有两个答案,但无限多的解决方案.
因此,如果您想确保至少有一定数量的答案,请定义:
at_least(Goal, N) :- \+ \+ call_nth(Goal, N).
与call_nth/2 在另一SO-答案定义.
请注意,其他SO-answers不正确:它们要么不终止,要么产生意外的实例化.