2
我是Prolog的新手。我有這樣的代碼:不理解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
?
我是Prolog的新手。我有這樣的代碼:不理解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
?
這只是你得到的第一個結果。如果你問Prolog翻譯給你下一個結果,你也會得到marsellus
。
你的規則存在的問題是,它並不禁止X
嫉妒他或她自己。爲了解決這個問題,添加一個條件,必須X
不等於Y
:
jealous(X,Y):- loves(X,Z), loves(Y,Z), X \= Y.