我是Prolog的新手。我有这段代码:
loves(vincent, mia).
loves(marsellus,mia).
jealous(X,Y):- loves(X,Z), loves(Y,Z).
我查询了jealous(vincent,W)
。但是SWI-Prolog给了我W = vincent
!
不应该是W = marsellus
?
答案 0 :(得分:3)
这只是你得到的第一个结果。如果你要求Prolog口译员给你下一个结果,你也会得到marsellus
。
您的规则存在的问题是,它并不禁止X
嫉妒他或她自己。要解决此问题,请添加X
不得等于Y
的条件:
jealous(X,Y):- loves(X,Z), loves(Y,Z), X \= Y.