将输出保存到列表中的 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
谓词。
我正在尝试编写一个函数,将另一个函数的所有输出保存到一个列表中。例如,我有一个输出以下内容的函数...
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
谓词。