1

「(b, 10)」である「b」を削除しようとしています。私が持っているコードは次のとおりです。

    remove(C, L1, L2).

    remove(C, [C|N], N).

    remove(C, [C|L1], [C|L2]) :- remove(C, L1, L2).

「C」は胸を表します。「L」は場所を表します。「N」は数字を表します。

正しい方向に向かっているのか、それとも何かが欠けているだけなのかはわかりません。

4

1 に答える 1

1

修正が必要です:

remove(_, [], []).  % drop this if must fail when no element found
remove(C, [(C,_)|N], N) :- !.
remove(C, [A|L1], [A|L2]) :-
    remove(C, L1, L2).

一致する引数を渡す必要があります

?- remove(c, [(a,1),(b,2),(c,3),(d,4)], L).
L = [(a,1),(b,2),(d,4)]
于 2012-11-28T13:58:42.547 に答える