Variables 在Prolog规则中传递整数

Variables 在Prolog规则中传递整数,variables,prolog,arguments,Variables,Prolog,Arguments,我对Prolog非常陌生,目前正在努力将整数作为一个规则的参数传递给SWI Prolog中的另一个规则。例如: left(B) :- B is B - 1. 任何帮助都将不胜感激。您可以尝试以下方法: left(A,B) :- B is A - 1. 那么cond2(X)应该返回X=3您至少说明了关于Prolog的三个基本误解。(1) B是B-1将始终失败,因为在Prolog中,这意味着您有一个值,B,它与B-1值相同,这当然是不可能的。(2)在Prolog中,谓词不返回值。他们不是成功

我对Prolog非常陌生,目前正在努力将整数作为一个规则的参数传递给SWI Prolog中的另一个规则。例如:

left(B) :- B is B - 1.


任何帮助都将不胜感激。

您可以尝试以下方法:

left(A,B) :- B is A - 1.


那么
cond2(X)
应该返回
X=3

您至少说明了关于Prolog的三个基本误解。(1)
B是B-1
将始终失败,因为在Prolog中,这意味着您有一个值,
B
,它与
B-1
值相同,这当然是不可能的。(2)在Prolog中,谓词不返回值。他们不是成功就是失败。因此
X=left(4)
不会“调用”
left
(3)
=/2
不是赋值运算符。这是一个统一操作员。
left(A,B) :- B is A - 1.
cond2(X) :- left(4,X).