1

下面的代码产生x(3)而不是x(4)因为它将 1 和 2 加在一起,即使 1 出现了两次。在 clgo中获得总金额的正确方法是什么?

p(0,1;1,1;2,2).
x(X) :- X = #sum { Y: p(_,Y) }.
4

1 回答 1

0

仍然不太确定为什么会这样,但确实如此:

x(X) :- X = #sum { Y, Z: p(Z,Y) }.

因此,您似乎必须写出整个“唯一键”,但只总结第一个值。我没有在文档中解释甚至提到这一点。

于 2021-05-11T10:08:59.383 回答