我想写一个Prolog代码,但我无法得到这个返回true。我试图找到一个列表,所有元素都包含在另外两个列表中。例如,所有列表A元素都可以在B和C列表中找到,而不是在一起。 我的Prolog代码:为什么prolog中的这一行返回false?
member(X, [X|_]).
member(X, [_|T]) :-
member(X, T).
first([H0|T0], [H0|T1], A) :-
member(H0, A),
first(T0, [H0|T1], A).
first([H0|T0], [_|T1], A) :-
first([H0|T0], T1, A).
其中一个元素是否在一个列表成员谓词返回true。使用predicate'first'我试图使用成员谓词在C列表中查找A和B的匹配元素。如果我找到了,然后在第一个列表中进一步比较它的第一个元素和第二个列表元素,再次,如果我匹配,我检查是否可以在第三个列表中找到它。我希望它这样做,但是当我跑
?- first([4, 6, 4], [4, 5, 6, 4], [1, 2, 4, 6]).
它给出了错误,我不明白为什么。这在某个地方似乎是一个简单的注意错误,但我无法让自己头脑发热。
你似乎缺乏空列出了基本情况。 –