有没有办法让这项工作?
add(X, X + 1)
输入:add(1,Y)。
预期产出:Y = 2
输出:Y = 1 + 1。
或者只能这样做吗?
add(X, Y):- Y is X+1.
答案 0 :(得分:3)
历史上,已经有许多尝试提供此功能。让我尽早举例CLP(ℜ)(约1986年)或最近的Prolog IV。然而,迟早,人们意识到程序员需要更好地控制所采用的统一类型。以一个想要区分公式的程序为例。在那种情况下,解释函子将没有任何用处。出于这个原因,今天大多数约束作为一些添加的谓词出现,使得仿函数无法解释。通过这种方式,它们也适用于ISO-Prolog,它允许约束作为扩展。
从程序员的角度来看,你的扩展会减少所需的辅助变量的数量,但是,它还需要解释所有这些术语,这会产生很多额外的开销。