我对Prolog有点陌生。我正在尝试编写一个函数子集(集合,子集),该函数确定子集是否是集合(duh)的子集。同样,如果第二个参数未实例化,则应输出每个可能的子集。现在,当实例化两个参数时它都可以工作,但是当我尝试输出所有子集时,它遇到了member / 2问题。例如:
?- subset([1,2,3], S).
S = [];
S = [1];
S = [1, 1];
S = [1, 1, 1];
...
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
% subset/2
% subset(Set, Subset) iff Subset is a subset of Set
subset(_, []).
subset(Set, [H|T]) :-
member(H, Set),
subset(Set, T).
Run Code Online (Sandbox Code Playgroud)
我如何做到这一点,以使成员不会继续选择Set中的第一个选项?