prolog中的子集功能

时间:2012-12-18 18:02:07

标签: prolog

我正在编写一个子集函数,我已经成功完成了这项工作。 这是我实现成员函数的函数:

 member( X, [ X | T ] ).
 member( X, [ _ | T ] ) :- member( X, T ).

 subset([], _).
 subset([H|T1], T2) :-
    member(H, T2),
    subset(T1, T2). 
 subset([H1|T1], [H2|T2]) :-
    \+ member(H1, T2),
    subset([H1|T1], T2).

我的问题是,是否有更好的方法使用成员函数编写此函数。

1 个答案:

答案 0 :(得分:2)

subset/3的第三个条款没有意义,我认为它应该删除。 如果H1不是T2的成员,那么递归调用subset([H1|T1], T2)显然也不会成功。

除此之外,前两个条款似乎还有很长的路要走。