数学

2016-11-08 50 views
0

有没有一种方法,使这项工作?数学

add(X, X + 1) 

input:add(1,Y)。
预期输出:Y = 2
输出:Y = 1 + 1。

或者是只有这样做可以吗?

add(X, Y):- Y is X+1. 
+3

'X + 1'仅表示' '+'(X,1)',它不是评估除非使用术语'是/ 2',算术表达式比较器,或CLP(FD)。你可以使用'添加(X,Y):= Y#= X + 1',如果你想让它关系性工作('加(X,2)'会产生'X = 1')。 – lurker

回答

2

从历史上看,已经有很多尝试提供这种功能。让我给出早期的例子CLP(ℜ)(大约1986)或更近的Prolog IV。然而,迟早会发现程序员需要更好地控制所采用的统一类型。以一个想要区分公式的程序为例。在这种情况下,解释函数将不会有任何用处。由于这个原因,大多数约束条件都是在今天发布的,因为一些添加的谓词使得函子不被解释。通过这种方式,它们也符合允许作为扩展的限制的ISO-Prolog。

从程序员的角度来看,延长和你将减少所需的辅助变量的数量,但是,它也需要所有条款解释为此产生了很多额外的开销。