Prolog 问题:刚开始学习 Prolog,这是我们收到的练习测验之一。
鉴于:
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.
在这里快速解释一下为什么查询中的规则顺序很重要。谢谢。