我想寫一個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]).
它給出了錯誤,我不明白爲什麼。這在某個地方似乎是一個簡單的注意錯誤,但我無法讓自己頭腦發熱。
你似乎缺乏空列出了基本情況。 –