Prolog 3之间是否可以不递归?

Prolog 3之间是否可以不递归?,prolog,instantiation-error,Prolog,Instantiation Error,我已经看到了/3之间的的定义: between(Lower, Upper, Lower) :- Lower =< Upper. between(Lower1, Upper, X) :- Lower1 < Upper, Lower2 is Lower1 + 1, between(Lower2, Upper, X). 我在gprolog上试过,它可以工作,但只适用于简单的查询: | ?- between(0,5,1). yes 对于带有变量的查询,我得到:

我已经看到了/3之间的
的定义:

between(Lower, Upper, Lower) :-
   Lower =< Upper.
between(Lower1, Upper, X) :-
   Lower1 < Upper,
   Lower2 is Lower1 + 1,
   between(Lower2, Upper, X).
我在
gprolog
上试过,它可以工作,但只适用于简单的查询:

| ?- between(0,5,1).

yes
对于带有变量的查询,我得到:

| ?- between(0,5,X).
uncaught exception: error(instantiation_error, (=<)/2)
|?-介于(0,5,X)之间。

未捕获异常:错误(实例化_error,(=一旦您知道Prolog中的通用算法是什么,错误就不是那么神秘了。简而言之,它只是在那里做非逻辑的“计算这个并给我答案”之类的算术。比较(所以所有

| ?- between(0,5,X).
uncaught exception: error(instantiation_error, (=<)/2)
?- X is 3^1.3.
X = 4.171167510947728.

?- 1 =:= sin(pi/2).
true.
?- fd_domain(X, 0, 2), fd_labeling(X).
X = 0 ? ;
X = 1 ? ;
X = 2
yes