Prolog 序言-查找0以上的任何数字
我对这个序言错误感到有点惊讶。对于Prolog 序言-查找0以上的任何数字,prolog,Prolog,我对这个序言错误感到有点惊讶。对于p(X):-X>0: ?- p(X). ERROR: Arguments are not sufficiently instantiated 我假设这会将X统一为大于0的某个值 有人能解释一下为什么我的直觉会偏离这里吗 通常,在prolog中使用算术,但您可以使用类似于来自同一源代码的以下代码片段: better_add(X,Y,S) :- not(var(X)), not(var(Y)), not(var(S)), Z is X + Y, Z=S. be
p(X):-X>0
:
?- p(X).
ERROR: Arguments are not sufficiently instantiated
我假设这会将X统一为大于0的某个值
有人能解释一下为什么我的直觉会偏离这里吗 通常,在prolog中使用算术,但您可以使用类似于来自同一源代码的以下代码片段:
better_add(X,Y,S) :- not(var(X)), not(var(Y)), not(var(S)),
Z is X + Y, Z=S.
better_add(X,Y,S) :- not(var(X)), not(var(Y)), var(S),
S is X + Y.
better_add(X,Y,S) :- not(var(X)), var(Y), not(var(S)),
Y is S - X.
better_add(X,Y,S) :- var(X), not(var(Y)), not(var(S)),
X is S - Y.
这是因为X必须是函数或数字才能使用>/2: