如何比较序言中的列表元素

时间:2019-12-11 20:40:26

标签: prolog

您如何比较两个列表以查看它们是否不同

?- compare_lists(X,Y).  

2 个答案:

答案 0 :(得分:2)

接下来呢?

compare_list([], []).

compare_list([H1 | T1], [H2 | T2]) :-
  H1 \= H2,
  compare_list(T1, T2).

这要求两个列表具有相同的长度才能返回true;如果您还希望从不同长度的列表中获取true,则必须将递归的基本情况加倍,因此

compare_list([], []).

你可以写

compare_list([], _).

compare_list(_, []).

答案 1 :(得分:1)

您可以在此处以maplist/3 [swi-doc]为目标来使用(\=) [swi-doc]

compare_list(LA, LB) :-
    maplist((\=), LA, LB).