2013-03-28 5 views
1

저는 Prolog를 처음 접했고 출력물을 쓰려고합니다.프롤로그에서 텍스트를 출력하는 방법은 무엇입니까?

나는 기능이 있습니다 father(X,Y) X가 Y의 아버지 인 경우는 true, 그래서이 상황이 발생합니다

?- father(homer,bart) 
true 

나는 이런 식으로 뭔가 어떻게해야합니까 :

doTests :- 
    write('Test1 expect true ==> '),(write father(homer,bart)),nl, 
    write('Test2 expect false ==> '),(write father(homer,nelson)),nl, 
    write('Test3 expect true ==> '),(write father(abe,homer)). 

그래서 난 뭔가를 얻기를 이 ...

?- doTests. 
Test1 expect true ==> true 
Test2 expect false ==> false 
Test3 expect true ==> true 

?

답변

2

나는 패턴 인수 분해합니다 :

:- meta_predicate oneTest(+,:). 

oneTest(Label, Pred) :- 
    (call(Pred) -> R = true ; R = false), format('~s ==> ~s~n', [Label, R]). 

doTests :- 
    oneTest('Test1 expect true', father(homer,bart)), 
    oneTest('Test2 expect false', father(homer,nelson)), 
    oneTest('Test3 expect true', father(abe,homer)). 
1

testfather : - father (homer, bart), writeln ('예 호머는 바트 아버지입니다').

홈런은 바트의 아버지가 아닌 경우, 당신이 경우 Writeln

testfather 할 변수를 인쇄 할 경우에 얻을 수 없을거야 - 아버지 (X, 바트를) 쓰기 (X), 쓰기 ('바트의 아버지'입니다), nl.

관련 문제