序言問題: 剛開始學習序言,這是我們給出的練習測驗之一。查詢規則的序言順序
考慮:
avenger(thor).
avenger(captainAmerica).
sibling(thor,loki).
asgardian(thor).
asgardian(X) :- sibling(Y,X),asgardian(Y).
train1(X,Y) :- avenger(X),!,avenger(Y).
train2(X,Y) :- avenger(X),X\=Y,avenger(Y).
名單由以下查詢返回的所有答案。
train2(A, captainAmerica). %returns A=thor.
train2(captainAmerica, A). %returns false.
我的問題是關於第二個查詢。爲什麼這不會返回A = thor。 ? 我搞砸了一下週圍,如果我TRAIN2改變
train2(X,Y) :- avenger(X),avenger(Y),X\=Y.
當我運行第二個查詢,我得到
A=thor.
爲什麼在查詢規則的順序事項這裏會快速的解釋太棒了。謝謝。
請參閱[此答案](http://stackoverflow.com/a/8523825/772868)。所以要麼使用'dif/2'或['iso_dif/2'](http://stackoverflow.com/a/20238931/772868) – false 2014-12-05 15:18:04