2017-04-11 45 views
0

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

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

...

cond2(X) :- X = left(4). 

任何帮助,将不胜感激。

+5

您正在说明对Prolog至少三个基本的误解。 (1)'B是B - 1'将总是失败,因为在Prolog中,这就是说你有一个值,'B'与'B - 1'值相同,当然这是不可能的(2)在Prolog中,谓词不返回值。他们要么成功,要么失败。所以'X = left(4)'不叫'left'。(3)'=/2'不是赋值操作符。这是一个统一的运营商。 – lurker

回答

0

你可以尝试以下方法:

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

...

cond2(X) :- left(4,X). 

然后cond2(X)应该返回X = 3