目標是執行謂詞noDupl/2
。確定邏輯程序
該謂詞的第一個參數是要分析的列表,第二個參數是不重複的數字列表。
我不明白下面的代碼,當我編譯它,它給了一個錯誤消息contained
是不確定的過程,但作爲提示,它是寫,我們可以爲預定義的謂語contained
和notContained
使用。我想我需要定義contained
和notContained
。
noDupl(XS, Res):-
help(XS, [],Res).
help([],_,[]).
help([X|XS],Seen,[X|Res]):-
notContained(X,XS),
notContained(X,Seen),
help(XS, [X|Seen], Res).
help([X|XS],Seen,Res):-
contained(X,Seen),
help(XS, Seen, Res).
help([X|XS],Seen,Res):-
contained(X,XS),
help(XS, [X|Seen], Res).
有人可以請解釋我的問題。
@false。謝謝!爲什麼不使用[tag:dcg]和['if _ // 3'](http://stackoverflow.com/a/29366458/4609915)?它會*更簡潔 - 但是什麼是專名? – repeat