Я новичок в 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. У меня есть такой код:
loves(vincent, mia).
loves(marsellus,mia).
jealous(X,Y):- loves(X,Z), loves(Y,Z).
Я спросил jealous(vincent,W)
. Но SWI-Prolog дает мне W = vincent
! Разве это не должно быть W = marsellus
?
Это только первый результат, который вы получите. Если вы попросите интерпретатор Пролога дать вам следующий результат, вы также получите marsellus
.
Проблема с вашим правилом в том, что оно не запрещает X
ревновать к себе. Чтобы исправить это, добавьте условие, что X
не должно быть равно Y
:
jealous(X,Y):- loves(X,Z), loves(Y,Z), X \= Y.