假设我在swi-prolog中创建了类似下面的函数。
function1(param) :- VALUE is 0, findValue(VALUE), write(VALUE).
但是 0 始终打印出来。 findValue函数在逻辑上是正确的。'
在function1中使用计算的值是不可能的?
答案 0 :(得分:0)
省略VALUE is 0
。
通过陈述它,函数findValue
将根据VALUE
设置其余变量,因为您首先提供的声明是公理级真实的声明,其余声明对应于它们。
例如,点击
func(X):- X is 0.
如果您查询func(X).
,则会产生X=0
因为它假定您要进行分配。
但是,如果您使用func(0).
之类的数字进行查询,则会检查X==0
是否为if (i == n) {
println (fibonacci (n));
} else {
fibonacci (n);
}
,从而产生布尔答案。