将输出保存到列表中的 Prolog 函数

Prolog-function that saves output into a list

我正在尝试编写一个函数,将另一个函数的所有输出保存到一个列表中。例如,我有一个输出以下内容的函数...

findComb([1,2,3,4],B).

 ?- [1,3];
 ?- [1,3];
 ?- [1,4];
 ?- [1,4];
 ?- false

我想要一个将所有输出保存到列表中的函数。例如...

?- [[1,3],[1,3],[1,4],[1,4]]

这是我创建这样一个函数的尝试,但它会导致无限循环...

convert(List,Accum) :-
    findComb(List,M),
    M \= false,
    convert(List,[M|Accum]).

我是 prolog 的新手,所以请尽量让它简单易懂。谢谢

您正在寻找 findall 谓词。