프롤로그 (이 경우 SWI-Prolog)에 완전히 새로 워서 매우 기본적인 질문에 사과드립니다. 아래에 간단한 프로그램이 있습니다. 간단한 프롤로그 프로그램 - 결과에 대해 확실하지 않음
loves(vincent,mia).
loves(marsellus,mia).
loves(pumpkin,honey_bunny).
loves(honey_bunny,pumpkin).
jealous(X, Y):- loves(X,Z), loves(Y,Z).
나는 다음과 같은 쿼리의 결과로 약간의 혼란 스러워요 :
?- jealous(vincent, X).
X = vincent ;
X = marsellus.
은 아마도 내가 프롤로그의 통일 과정 단지 익숙하지 해요,하지만해야하지 대답 단지를 marsellus일까요? 왜 빈센트는 유효한 결과로 여기에 포함됩니까?
다음 질문으로 : 나는 질투하는 모든 사람들의 결과를 얻기 위해 질투심 (X, Y)과 같은 질의를 쓸 것이라고 정정했다. ?
그렇다면 누군가가 상기 쿼리의 다음 결과를 설명 할 수 있습니까?
?- jealous(X, Y).
X = Y, Y = vincent ;
X = vincent,
Y = marsellus ;
X = marsellus,
Y = vincent ;
X = Y, Y = marsellus ;
X = Y, Y = pumpkin ;
X = Y, Y = honey_bunny.
모든 도움을 주시면 감사하겠습니다. 감사!
감사합니다. 너는 옳은 것처럼 보인다. 나는 X와 Y가 같을 수 없다는 것을 명시해야한다고 생각한다. 나는 이것이 내가 쓴 규칙에 의해 추측 될 것이라고 생각했지만, 나는 그렇지 않다고 생각한다! – Decoy
또한 SWI-Prolog에 쓰는 올바른 방법은 X \ == Y 일 것입니다 (다른 사람의 답에 자유롭게 편집하십시오). – Decoy
@Decoy, 그 덕분에, 나는 그것을 추가했습니다. 나는 또한 두 번째 질문을 열거했다고 생각합니다. 그것은 같은 문제로 인한 것입니다. 업데이트 된 답변을 참조하십시오. – paxdiablo