2013-03-28 2 views
1

Я новичок в 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: - отец (homer, bart), writeln («Да, Гомер - отец брата»).

если Гомер не отец Барта, вы никогда не получите в WriteLn

, если вы хотите распечатать переменную, сделать это

testfather: - отец (X, Bart), написать письмо (X), написать письмо ('отец отца), nl.

Смежные вопросы