Prolog-findall函数

Prolog-findall函数,prolog,Prolog,我的意思是,如何在另一个函数中使用findall函数 subset(0, [], []). subset(Len, [E|Tail], [E|NTail]):- succ(PLen, Len),(PLen > 0 -> subset(PLen, Tail, NTail) ; NTail=[]). subset(Len, [_|Tail], NTail):- subset(Len, Tail, NTail). 这给出了一个包含N个元素的列表的子列表,但我想把所有结果都保存在一个列表中

我的意思是,如何在另一个函数中使用findall函数

subset(0, [], []).
subset(Len, [E|Tail], [E|NTail]):- succ(PLen, Len),(PLen > 0 -> subset(PLen, Tail, NTail) ; NTail=[]).
subset(Len, [_|Tail], NTail):- subset(Len, Tail, NTail).
这给出了一个包含N个元素的列表的子列表,但我想把所有结果都保存在一个列表中,然后我写了

 result(N,List,Result):- findall3(Y,subset(N,List,Y),Result).

然而,我得到的错误,我是新的在prolog中,这是允许或不允许的使用,如果不允许,我如何才能获得这些子列表中的一个列表,是无论如何

您想要的是
findall
,而不是
findall3

您的意思是键入
findall3
?它实际上是
findall/3
,这意味着它被称为
findall
,并接受3个参数。哦,对不起,谢谢。