如何在prolog中输出文本?

如何在prolog中输出文本?,prolog,Prolog,我是Prolog新手,我正在尝试编写一些输出 我有一个函数:父(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,

我是Prolog新手,我正在尝试编写一些输出

我有一个函数:
父(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
?

testfather:- 父亲(荷马,巴特), writeln(“是的,荷马是巴特的父亲”)

如果荷马不是巴特的父亲,你就永远也读不到那本书

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

父亲:- 父亲(X,巴特), 写(X), 写(‘是巴特之父’), nl.

测试父亲:- 父亲(荷马,巴特), writeln(“是的,荷马是巴特的父亲”)

如果荷马不是巴特的父亲,你就永远也读不到那本书

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

父亲:- 父亲(X,巴特), 写(X), 写(‘是巴特之父’),
nl.

我会将模式分解为:

:- 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)).

我会将模式分解为:

:- 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)).