Prolog で順序付きリストから要素を削除する述語を作成しようとしています。これは宿題の一部であり、Prolog のセマンティクスが一般的にどのように機能するかについて非常に混乱しています。
目標を持って次の関数を試すと、rdup([1,2], L).
が得られfalse
ます。私は目標をたどりましたが、rdupへの再帰呼び出しで結果リストを構築する方法で結果リストを構築することは想定されていないようです。結果リストをどのように作成すればよいかわかりません。関数は次のとおりです。
rdup([],M).
rdup([X],[X]).
rdup([H1,H2|T], M) :- H1 \= H2, rdup(T, [M,H1,H2]).
rdup([H1,_|T], M) :- rdup(T, [M,H1]).
私の推論が間違っている場所や、Prologで再帰的にリストを作成する方法を教えてもらえますか?