我寫了一個成員函數來檢查一個元素是否存在於一個列表中。成員函數給出奇怪的結果。
member(X, [X|_]).
member(X, [_|Y]) :- member(X, Y).
我將.pl文件加載到SWI prolog中,並且我沒有收到有關成員的警告或錯誤。我測試成員函數使用...
member(A, [1,2,3,4]).
這,顯然應該返回false。相反,我得到
A = 1
然後,當我試圖進入新的命令時,IDE只是表明我,我輸入的鑰匙,並說不明行動「什麼都鍵I按下」
我覺得我的成員函數聲音,因爲它與我的教授寫的相匹配。
任何想法?
爲什麼'member(A,[1,2,3,4])*顯然返回false *?對於A = 1和A = 2,A = 3和A = 4,顯然應該是成功的。當它顯示「A = 1」時,如果有(根據Prolog文檔),您需要按SPACE或';'查看下一個結果。 – lurker
可能性是,這個謂詞不是由你的教授寫的。 'member/2',這個實現,已經存在幾十年了,我想呢?我在1986年出版的死樹教科書中看到過它,但我猜它早於這本書。 – 2017-04-15 08:08:40
@Boris:最近〜不到10年,'member/2'成了一個真正的內置。所以提供它的定義是很自然的。 – false