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