2009-09-18 4 views
0

Prolog에서 상대 규칙을 정의하는 방법은 무엇입니까?Prolog에서 상대 규칙을 정의하는 방법은 무엇입니까?

이것은 내가 지금까지 무엇을 가지고 있습니다 : 사전에

spouce(X,Y) :- 
    wife(X,Y). 

spouce(X,Y) :- 
    husband(X,Y). 

relative-by-blood(X,Y) :- 
    ancestor(Z,X), 
    ancestor(Z,Y). 


relative(X,Y) :- 
    relative-by-blood(X,Y). 

relative(X,Y) :- 
    spouce(X,Y). 

relative(X,Y) :- 
    relative-by-blood(X,Z), %<- not sure what to do here. 

감사합니다!

+0

자세히 설명해주십시오. –

+0

정보를 조금 더 주시겠습니까? 지금까지 우리에게 주신 내용을 바탕으로 아래에서 내 대답을보십시오. 그러나 우리가 질문에서 얻는 것 이상의 이야기에 대한 느낌이 있습니다. –

+2

ISO Prolog 구문에서 인용되지 않은 원자는 하이픈 - 빼기를 포함 할 수 없으므로 'relative-by-blood (X, Y)'는 원하는대로 구문 분석되지 않습니다. 대신, 당신은'- (- (상대, by), blood (X, Y))'를 얻을 것입니다. 필자는'relative_by_blood (X, Y)'를 원한다고 생각합니다.이 함수는 functor 인'relative_by_blood'와'X'와'Y' 인자로 두 개의 인자를 갖는 복합 항으로 해석합니다. – bcat

답변

1

는 글쎄, 우선, 당신이로 relative(X,Y)를 다시 작성할 필요가 있다고 생각 : 우리는 더 많은 정보를 필요로 거기에서

 
relative(X,Y) :- relative-by-blood(X,Y) ; spouce(X,Y). 

(나는 우리가 더 얻는 경우에 내 대답에 추가하고 편집 할 수 있습니다). 또한 ancestor 규칙을 제공해 주실 수 있습니까?

관련 문제