我有這個簡單的程序來檢查,如果一個X
元素屬於列表:如何判斷一個元素是否屬於Prolog中的一個列表?
member2(X, [X|_]).
member2(X,[_|T]):- member2(X,T).
我試圖寫它的擴展形式(因爲在以前的方式行爲是不太清楚)。所以我把它以下列方式寫:
member2(X, [X|_]).
member2(X,Y):- Y = [_|T],
member2(X,T).
因此意義更加清晰:
我已經一個事實,即代表基本情況(在X
元素屬於列表中,如果它是在名單的頭)。
規則說,我要證明兩兩件事:
1)Y = [_|T]
。這是真實的,因爲匿名變量_
與任何事物相統一。
2)遞歸搜索元件X
在尾部列表。
好吧,我想我的推理是正確的,但該計劃的第二個版本不工作!我想,也許這個問題可能在Y = [_|T]
部分
這個程序似乎對我在SWI-PL上的預期工作,究竟是哪裏出了問題?你是否收到錯誤信息? – sharky