2013-03-28 81 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。