은 Prolog 초보자로서 Prolog에서 교환 적 표현이 매우 직관적이지 않음을 알았습니다.Prolog에서 "Commutativity"를 표현할 수있는 대안은 무엇입니까?
family(X,Y) :-
married(X,Y);
relative(X,Y);
father_son(X,Y).
나는 또한 "교환 법칙이 성립"하게하기 위해, 정의에 다음을 추가한다 : 나는 X와 Y를 표현하려는 경우 예를 들어
처럼, 한 가족에
married(Y,X);
relative(Y,X);
father_son(Y,X).
그러나 우리는 우아한 코드를 작성하기를 원하기 때문에 우리는 프롤로그를 사용하여 ... 그래서, 나는 원래 (대신 위의 세 가지의) 하나 개의 라인을 추가 할 수 있도록 노력하겠습니다 것 :
family(Y,X).
여기에 POINT가 있습니다. 그것은 종말론으로 인도합니다! 왜 프롤로그는 "논리적"이지 않은가? 그리고 끝내지 않는 단서 표현에 대한 대안이 있습니다.
좋은 주말! 와트
나는 그것을 보았고, 왜 그것이 끝이 없는지도 분명하다. 감사! – Matt
나는 또한 별도의 사실을 사용하는 것이 좋습니다; –
@AlexanderSerebrenik 물론 - 원본 스타일에 가깝고 싶었습니다. 그러나 필자의 Prolog 시절에는 가독성과 디버깅 용이성을 위해'; '보다 여러 규칙을 선호했다. – dasblinkenlight