2014-01-09 1 views
1

프롤로그에서 프로그램을 작성했습니다.경고 : 싱글 톤 변수 : [Alice, Ben] in prolog

parent(Amy,John). 
parent(Bob,John). 
parent(John,Ben). 
parent(Alice,Ben). 

저는 Ubuntu 12.04에서 SWI-Prolog를 사용하고 있습니다. 내가 SWI - 프롤로그 인터프리터 내 파일을 삽입 할 때 :

Warning: /home/mazix/example1.pl:1: 
     Singleton variables: [Amy,John] 
Warning: /home/mazix/example1.pl:2: 
     Singleton variables: [Bob,John] 
Warning: /home/mazix/example1.pl:3: 
     Singleton variables: [John,Ben] 
Warning: /home/mazix/example1.pl:4: 
     Singleton variables: [Alice,Ben] 
% example1.pl compiled 0.00 sec, 4 clauses 
true. 

이 무엇을 의미합니까 :

['example.pl'] 

을 나는 경고를 받고 있어요? 그리고 하단의 true은 무엇을 의미합니까? 이 경고를 어떻게 제거해야합니까?

답변

6

대문자로 시작하는 식별자는 변수입니다.

parent('Amy', 'John'). 

또는 작은 편지로 시작 : 당신이 원자를 원하는 경우, 작은 따옴표로 묶어

parent(amy, john). 

A "싱글 변수"의 어휘 범위에서 한 번만 나타납니다 명명 된 변수 . 이것이 실제로 의미하는 바는 실제로 이름을 짓는 것입니다.하지만 컴파일러가 경고하므로 유용하지는 않습니다.

3

아에 .. 등의 경우 존, 벤,

가 대문자 때문에, 프롤로그 생각들이 변수를 낮추기 위해 모든 이름을 변경합니다. 그리고 그 변수를 사용하지 않았으므로 나중에 문제가 발생할 것이라고 경고합니다.

'true'는 경고 메시지와 함께 모듈 ..을로드했음을 나타냅니다. 프롤로그에서하는 모든 작업이 true 또는 false를 반환합니다.

1

변수를 나타내는 관계에 대문자 이름을 사용하고 있습니다. datatypes in Prolog을 알고 있어야합니다. 보리스는 이미 당신에게 힌트를주었습니다.

싱글 톤 변수는 다른 곳에서는이 변수를 사용하지 않는다는 것을 알려줍니다. 마지막에 true는 당신에게 프롤로그 규칙에 아무런 모순이 없다는 것을 말해줍니다 (어쨌든 규칙이 없기 때문에).