Да, вы можете использовать findall/3
.Но в зависимости от того, что вы действительно хотите сделать, часто есть лучшие способы.Хотите выводить вещи?Затем попробуйте это:
print_participants :-
common_participant(Person, PairEvent),
write(Person), write(' participates in '), write(PairEvent), write('.'), nl,
fail.
print_participants :-
true.
Таким образом, вам не нужно хранить все комбинации в большом списке одновременно, а только ту, которая необходима для печати.
Редактировать: Исправлен код, предложенный Каарел .