2013-03-28 48 views
1

我是新來的Prolog,我試圖寫一些輸出。如何在prolog中輸出文本?

我有一個函數:father(X,Y)這是真的,如果X爲Y的父親,所以出現這種情況:

?- 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: - 父親(本壘打,巴特), writeln('是荷馬是barts的父親')。

如果荷馬是不是巴特的父親,你永遠也沒有機會了writeln如果你想打印出一個變量,這樣做

testfather

: - 父親(X,BART) 寫(X), 寫('是巴特的父親'), nl。