一小时前我刚刚开始浏览Prolog,并且已经发现了一个我不确定的轻微问题。我正在编写一个谓词(或函数?),它接受一个列表并返回最小值和最大值。现在,我只是看一下列表中有1个项目的特殊情况之一。例如,如果查询minmax([5],X,Y)。我希望谓词返回X = 5 Y = 5。我有这段代码:
minmax([X], X, X).
但是它返回X = Y,Y = 5.我知道这是一个真实的陈述而且微不足道,但有没有办法可以返回X = 5,Y = 5 ???
答案 0 :(得分:1)
X=Y, Y=5
表示X
和Y
现在都等于5
。这只是一种不同的说法;你真的不应该在乎。如果您同时打印两个值,则只需5
:
?- [user].
|: print_stuff :-
|: X = Y,
|: Y = 5,
|: write('X = '), writeln(X),
|: write('Y = '), writeln(Y).
|: % user://1 compiled 0.02 sec, 2 clauses
true.
?- print_stuff.
X = 5
Y = 5
true.
答案 1 :(得分:1)
它正在回归你的想法。 X是5,Y是Y.值是统一,因此解释器显示消息X=Y, Y=5.
您需要获取Prolog教科书并阅读术语的统一
你可以轻易说出
foo(A,B) :- A = 5 , B is (A+A)/2 .
并查询它:
?- foo(X,Y).
得到相同的结果。在Prolog世界中,只有一个整数5
的实例。