我想在Prolog中編寫一個元素處理函數。它幾乎與prolog謂詞成員/ 2相同,但它必須以不同的方式完成這項工作。爲了具體;我必須說,成員/ 2謂詞函數是這樣的:Prolog中的元素處理問題,但不是在常規列表中?
member(X, [X|_]).
member(X, [_|Tail]) :-
member(X,Tail).
當你給例如查詢:member(X, [1,2,3])
。
它爲您提供X = 1; X = 2; X = 3;
所有重做的順序。我想要一個元素函數幾乎相同。我想與成員函數相同的結果時,我給這樣的查詢:
element(X, (1,2,3)).
的區別只是括號,而不是像這樣bracekts:[]
爲了做到這一點,我試過了:
element(X, (X,_)).
element(X, (_,Tail)) :-
element(X,Tail).
這與member/2謂詞函數的實現完全相同。但是,這並不工作,因爲它不會給最後一個元素是X=3.
所以我增加了一個事實,那就是:
element(X, X).
但是,這並不工作,或者是因爲(明顯)它提供不必要的用以下真實元素回答:
X=(1,2,3)
X=(2,3)
我該如何處理?
你的'成員/ 2'代碼爲關:應該讀作[_ |尾]',不'[_,Tail]' – m09 2013-04-22 13:56:04
是的,我在這裏寫錯了,對不起,我現在正在改正。順便說一句,我正如你所說的以正確的方式在程序中使用它。 – 2013-04-23 09:10:52