Findall идет не так, как ожидалось
Я получил это правило: copiloting(Dev1, Dev2, Copiloting, AtRev)
который дает мне номер Copiloting
для двух человек Dev1
а также Dev2
,
Я хотел бы найти все Copiloting
значения для каждой пары (Dev1
, Dev2
) возможно поэтому я сделал это правило:
allCopiloting(L, AtRev) :-
findall((Dev1, Dev2, Copiloting),
copiloting(Dev1, Dev2, Copiloting, AtRev),
L).
Но когда я делаю это, он возвращает мне это:
?- maxRevisions(Rev), allCopiloting(L, Rev).
Rev = 247,
L = [ (_G98355, _G98358, 1)].
Вот правило копирования:
copiloting(Dev1, Dev2, Copiloting, AtRev) :-
findall(Tested,
(addReference(Test, 'calls', Tested, R3, _),
create(Test, 'method', _, Dev1),
isTestMethod(Test, AtRev),
create(Tested, 'method', R2, Dev2),
\+ (remReference(Test, 'calls', Tested, R4, _),
R4 > R3)),
TestedList),
list_to_set(TestedList, TestedSet),
testedMethods(AllTestedSet, AtRev),
length(TestedSet, A),
length(AllTestedSet, B),
Copiloting is A / B.
Я не очень понимаю, почему, я хотел бы полный список со всеми возможными парами людей. Я что-то пропустил?