在序言子集函数(Subset function in prolog)

2019-10-17 11:53发布

我正在写一个子集的功能,我已经做得很成功。 这里是我的功能,实现成员函数:

 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).

我的问题是,有没有更好的方式来写当然使用成员函数此功能。

Answer 1:

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

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



文章来源: Subset function in prolog
标签: prolog