prolog中的不同查询结果

时间:2012-10-06 06:39:41

标签: prolog

我在prolog中有一个问题。这是知识库。

loves(vincent,mia).
loves(marcellus,mia).
loves(pumpkin,honey_bunny).
loves(honey_bunny,pumpkin).

jealous(X,Y) :-
   loves(X,Z),
   loves(Y,Z).

这是来自“Learn Prolog Now”一书。现在,如果我进行查询?- jealous(marcellus,W).,则返回W = vincent,但如果我提供查询?- jealous(vincent,W).,则返回结果为W=vincent所以这意味着文森特嫉妒自己但是马塞勒斯并不嫉妒自己。为什么答案不同? 我在Ubuntu Linux中使用swipl,它位于winxp上的VirtualBox中。我是Prolog的初学者。

由于

1 个答案:

答案 0 :(得分:2)

在查询W = vincent的答案?- jealous(marcellus,W).后输入;而不是Enter,您将获得W = marcellus. 您必须在X \= Y中添加jealous/2这一事实。