下面的謂詞將項目X添加到列表S.它工作正常。序言:添加列表設置
addToSet(X, S, S) :-
atomic(X),
member(X, S),
!.
addToSet(X, S, [X|S]) :-
atomic(X).
我試圖把它擴大到它增加了列表中的謂語[H | T]設置S.它可以完美的,如果[H | T]只有2項長...即如果T也原子。
addToSet([], S, S).
addToSet([H,T], S, S2) :-
addToSet(H, S, S1),
addToSet(T, S1, S2).
例如addToSet([5,6],[1,2,3,4],X)。按我的願望工作。但是,addToSet([5,6,7],[1,2,3,4],X)。根本不起作用。我很難過......我的代碼的最後2-3行顯然有些問題,但我無法弄清楚。有小費嗎?
謝謝!
考慮檢查集合相關的謂詞(如果它存在於你的序言系統中)swi-prolog,這裏有一些http://www.swi-prolog.org/pldoc/doc_for?object=section%282,% 27A.12%27,swi%28%27/doc/Manual/lists.html%27%29%29 –