我需要帮助创建一种例行程序。我需要创建一个类似以下的例行程序:
difference([(a,b),(a,c),(b,c),(d,e)],[(a,_)],X).
X = [(b,c),(d,e)].
我在这个问题上真的需要帮助。
我已经写了一个方法,可以删除它找到的第一个出现.. 但是我需要删除所有出现。以下是我目前为止的代码...
memberOf(A, [A|_]).
memberOf(A, [_|B]) :-
memberOf(A, B).
mapdiff([], _, []) :- !.
mapdiff([A|C], B, D) :-
memberOf(A, B), !,
mapdiff(C, B, D).
mapdiff([A|B], C, [A|D]) :-
mapdiff(B, C, D).
我从列表(subtract)中获取了这段代码。
虽然我不完全理解它的作用,但我知道它几乎是我想要的。我没有使用subtract,因为我的最终代码必须与WIN-Prolog兼容...我正在SWI Prolog上进行测试。
(a, _)
变成了(a, b)
,这将不再与(a, c)
匹配。我正在考虑一个好的解决方案... - Stephan202