假设我们有两个变量X
和Y
。 X
为53
,Y
为52
。我想要做的是通过将1
添加到Y
来比较它们,以便它53
- 因此X
将等于Y + 1
。
我试图通过简单地使用等号运算符和Y
变量的加法来实现它,如下所示:
X == Y + 1
即使这看起来很简单,但我得到了false
。我错过了什么?
答案 0 :(得分:1)
如果您使用整数进行推理,请使用Prolog系统的 CLP(FD)约束来比较和评估算术整数表达式。
例如,在use_module(library(clpfd)
之后的SICStus,SWI和YAP中:
?- 53 #= 52 + 1.
true.
这适用于所有方向。
其他例子:
?- X #= 52 + 1.
X = 53.
?- 53 #= Y + 1.
Y = 52.
?- 53 #= 52 + 1.
true.
答案 1 :(得分:1)
GetGames(User)
如您所见,(=:=)/ 2评估双方,(>)/ 2等等
答案 2 :(得分:0)
为了评估表达式树,使用is
谓词:
X is Y+1.
但是,您必须小心,如果X
和Y
都已接地,那么这只会作为测试。如果右侧的变量(在这种情况下为Y
)没有接地,则始终会出错。
swipl
演示:
?- X = 53, Y = 52, X is Y+1.
X = 53,
Y = 52.
?- X = 53, Y = 52, X is Y.
false.
?- X = 53, X is Y+1.
ERROR: is/2: Arguments are not sufficiently instantiated
?- Y = 52, X is Y+1.
Y = 52,
X = 53.