2014-03-28 7 views
0

다음과 같이 내 데이터베이스에서 daughter_of 및 son_of를 정의하는 Prolog에서 규칙을 만들고 싶습니다. 그러나 새 규칙에서 Y, M 및 F와 함께 싱글 톤 오류가 발생합니다. 변수가 다른 곳에서 사용되지 않은 경우에만 이것이 발생했다고 생각했습니다. 또한 이것이 새로운 규칙을 작성하는 올바른 방법입니까?싱글 톤 변수 프롤로그

모든 안내가 크게 감사하겠습니다.

daughter_of(X,Y):- 
    female(X), 
    parents(X,M,F), 
    (Y = M ; Y = F). 

son_of(X,Y):- 
    male(X), 
    parents(X,M,F), 
    (Y = M ; Y = F). 

테스트 :

parents(X,M,F) 어머니와 아버지를 얻을 후에는 어머니 또는 아버지 = Y. 여기

가 해결 될 경우 코드를 확인하는 것을 잊었다

male(albert). 
male(edward). 

female(alice). 
female(victoria). 

parents(edward, victoria, albert). 
parents(alice, victoria, albert). 

sister_of(X,Y):- 
female(X), 
parents(X,M,F), 
parents(Y,M,F). 

brother_of(X,Y):- 
male(X), 
parents(X,M,F), 
parents(Y,M,F). 

daughter_of(X,Y):- 
female(X), 
parents(X,M,F). 

son_of(X,_Y):- 
male(X), 
parents(X,M,F). 
+0

술어의 변수 범위는 특정 절로 제한됩니다. 따라서 변수가 절에서 한 번만 언급되면 단일 경고가 표시됩니다. 당신의'son_of'와'daughter_of' 술어는 각각 하나의 절일 뿐이며'M'은 언급했지만 사용하지는 않습니다. 'daughter_of'는'Y'를 사용하지 않습니다. – lurker

+0

정말 고맙습니다. – CompilerSaysNo

답변

1

, 감사 실행 :

?- son_of(X, Y). 
X = edward, 
Y = victoria ; 
X = edward, 
Y = albert. 

?- daughter_of(X, Y). 
X = alice, 
Y = victoria ; 
X = alice, 
Y = albert ; 
false. 
관련 문제