我正在编写一个子集函数,我已经成功完成了这项工作。 这是我实现成员函数的函数:
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).
我的问题是,是否有更好的方法使用成员函数编写此函数。
答案 0 :(得分:2)
subset/3
的第三个条款没有意义,我认为它应该删除。
如果H1
不是T2
的成员,那么递归调用subset([H1|T1], T2)
显然也不会成功。
除此之外,前两个条款似乎还有很长的路要走。