Prolog Question: Только что начал изучать пролог, и это было на одном из тех викторин, которые мы получили.Порядок запроса правил запроса
Дано:
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