我写了一个谓词common_participant(Person, PairEvent)
。从我的知识库中返回成对事实。我想知道是否有任何方法可以执行变量绑定并收集所有结果而不必每次都使用分号。
谢谢,
予。
答案 0 :(得分:1)
是的,您可以使用findall/3
。但取决于你真正想做的事情,往往有更好的方法。你想输出东西吗?然后试试这个:
print_participants :-
common_participant(Person, PairEvent),
write(Person), write(' participates in '), write(PairEvent), write('.'), nl,
fail.
print_participants :-
true.
这样,您不需要同时将所有组合保留在大型列表中,而只需要打印所需的组合。
编辑:修正了 Kaarel 建议的代码。