Prolog 生成电源集并将其作为列表返回

Prolog 生成电源集并将其作为列表返回,prolog,Prolog,我目前在生成给定集合的电源集(例如[1,2,3])和填充列表列表时遇到问题。我对Prolog完全是新手,能够生成这样的powerset,但它是递归的,并逐个返回它们 powerset([], []). powerset([E|Tail], [E|OtherTail]) :- powerset(Tail, OtherTail). powerset([_|Tail], OtherTail) :- powerset(Tail, OtherTail). 我正试图将其全部放在一个列表中:

我目前在生成给定集合的电源集(例如[1,2,3])和填充列表列表时遇到问题。我对Prolog完全是新手,能够生成这样的powerset,但它是递归的,并逐个返回它们

powerset([], []).
powerset([E|Tail], [E|OtherTail]) :-
    powerset(Tail, OtherTail).
powerset([_|Tail], OtherTail) :-
    powerset(Tail, OtherTail).

我正试图将其全部放在一个列表中:
示例[1,2]->[[1],[2],[1,2],][]

在回溯时提供每个解决方案的递归解决方案没有问题。这就是序言中的面包和黄油。如果您希望列表中的所有解决方案,请使用
findall/3
.in、
pset([a | B])-->([a];[])、pset(B)。pset([])-->[]。