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 回答