我是prolog的新手,我已经完成了一些编码,但是我有一个我无法处理的任务。你能告诉我如何描述一个工作谓词,比较arg1,arg2和arg3并返回yes arg1> arg2> arg3?非常感谢提前!
Szymon
答案 0 :(得分:2)
解决方案非常简单:
compare3(X, Y, Z):-
X>Y,
Y>Z.
?- compare3(5,4,3).
true.
请记住,您无法使用任意数量的输入参数定义谓词(因此显然只能使用3个输入调用compare/3
)。为了使其更加灵活,您可以将元素插入列表中并像这样重写
myCompare([]).
myCompare([_]):- !.
myCompare([A,B|T]):-
A>B,
myCompare([B|T]).
?- myCompare([5,4,3]).
true.
现在myCompare/1
接受一个列表,如果列表已排序则返回true,否则返回false。