我想在prolog中编写一个谓词withoutElement(A,Lf,Lg)
,如果列表Lg
与没有元素Lf
的列表A
相同,则为真。
例如:
withoutElement(a,[a,b,c,d],[a,b,c,d]).
=假
和
withoutElement(a,[a,b,c,d],[b,c,d]).
= True
这样做的最佳方式是什么?
答案 0 :(得分:1)
使用递归定义:
without_element(A, [A|Lg], Lg). % True if element A is
% head of Lf and the tail (Lg)
% is the same.
without_element(A, Lf, [A|Lf]). % If you want to check the other way round
without_element(A, [H|T1], [H|T2]) :- without_element(A, T1, T2). % ↵
% Check first elements are the same, continue checking rest of lists.