如何在prolog中输出文本?

时间:2013-03-28 00:41:11

标签: prolog

我是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 个答案:

答案 0 :(得分: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 :(得分:1)

测试父亲: -          父亲(本垒打,巴特),          writeln('是的荷马是婊子父亲')。

如果本垒打不是巴特的父亲,你永远不会得到写作

如果要打印变量,请执行此操作

测试父亲: -          父亲(X,巴特),          写(X),          写('是巴特之父'),          NL