指定されたリストからすべての重複を削除したい。
次のコードを検討してください。
% check if the given element is in the given list
member(Element,[Element|_]).
member(Element,[_|List]):-member(Element, List).
% append the element only if it's NOT already in the input list
appending([],X,X).
appending([H|T1],Elem,[H|T2]):- appending(T1,Elem,T2).
appendHlp(ListOrg,Res,Addme):- not(member(Addme,ListOrg)),
appending(ListOrg,[Addme],Res).
appendHlp(ListOrg,Res,Addme):- member(Addme,ListOrg),
Res=ListOrg.
% remove duplicates
setify([H|T],Set):-appendHlp(Set,Output,H),
setify(T,Output).
setify([],_).
そして、私がコードを実行すると:
1 ?- setify([1,2,3,3,2],X).
出力は次のとおりです。
X = [1, 2, 3|_G2725]
どうすれば尻尾を取り除くことができますか?
ありがとう