序言。列出谓词以删除元素

时间:2012-11-27 22:35:00

标签: list prolog element win-prolog

我试图删除'b',即'(b,10)'。我的代码是:

    remove(C, L1, L2).

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

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

'C'代表胸部。 'L'代表一个位置。 'N'代表一个数字。

我不确定我是朝着正确的方向前进,还是我只是遗漏了一些东西。

1 个答案:

答案 0 :(得分: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)]