4
如何編碼成員/ 2確定性最後 元素。目前我使用:代碼/ 2與某些確定
member(X,[X|_]).
member(X,[_|Y]) :- member(X,Y).
當我查詢以下:
?- member(X,[1,2]).
X = 1 ;
X = 2 ;
No
解釋器繼續返回2,因爲 還有一個選擇點後左搜索。我怎麼能實現成員/ 2 ,以便這不再發生?
但成員/ 2的全語義應予以保留,即 答案,如:
?- member(X,Y)
Y = [X|_1] ;
Y = [_1,X|_2] ;
etc..
仍然將正常運行befor。
再見
那麼它會波及到其他謂詞。當成員對最後一個元素是確定性的,那麼使用成員的其他謂詞也會得到更多的確定性。確定性很好,因爲它允許Prolog解釋器修剪環境並執行垃圾收集。 –
好像你可以去看看swi pl的成員/ 2,它對最後一個元素是確定性的。 – m09