2013-03-03 4 views
2

저는 프롤로그에서 프로그래밍 할 때 초보자입니다.프롤로그의 응답 응답을 변경하십시오.

프롤로그 프로그램에서 반환 한 값을 표준 yes 또는 no 대신 true/false를 반환하도록 변경하고 싶습니다.

매우 간단한 예를 생각해보십시오. 예 :

isNode(1). 

yes 

내 질문은 :

전에서이 설정을 변경하려면 어떻게 프롤로그 명령 줄에서 simple.P

node(1). 

isNode(X) : node(X) 

나는 isNode (1)이 같은 예에 반환 입력하면 네, 사실입니까?

+0

엄밀히 말하자면 프로그램에서 제어하는 ​​부분이 아니라 사용중인 Prolog 시스템의 사용자 인터페이스입니다. 종종 'REPL' (Read, Eval, Print, Loop) 또는 더 자주'console'라고하는이 인터페이스는 프로그래머가 Prolog의'내부 작업 '을 제어 할 수있게 해주는 더 간단한 방법입니다. 프로그래머는 프로그램에 * 자신의 인터페이스를 정의하여 true/false 또는 적절한 사용자 입력이 더 좋다고 생각하는 것으로 응답해야합니다. – CapelliC

+0

이것은 사용중인 Prolog 언어에 따라 다릅니다. 예를 들어, SWI Prolog는 때로는 아무 것도보고하지 않으며 때로는 "사실"이라고 표시합니다. –

+0

@AlexanderSerebrenik : SWI는 언제보고하지 않습니까? 내 이해를 위해 항상 대답을 산출합니다. – false

답변

1

프롤로그가 귀하의 질의 증명을 찾으려고 시도합니다. 쿼리에 변수가 있으면 true가되는 값을 출력합니다.

Q : 균등 한 소수 자리가 있습니까? A : 예 - 2는 균등하고 소수입니다

입력하는 동안 계속 더 많은 교정을 제공합니다. 결국 실행이 끝나고 false로 응답합니다.

Q : 균등 한 소수 자리가 있습니까? A : 예 - 2는 균등하고 소수입니다 Q : 더 이상 있습니까? A : 거짓.

원하는 것은 프로그램이 출력을 수행하기 위해서입니다. 이를 수행 할 수있는 라이브러리 술어가 많이 있습니다. 가장 유연한 형식/2

myprogram :- 
    my_old_program, !, 
    format('yup, that sure is right!~n', []). 
myprogram :- 
    format('nope, nope, no way in heck!~n', []).