我已经看到了Prolog Prologue的定义between/3
:
between(Lower, Upper, Lower) :-
Lower =< Upper.
between(Lower1, Upper, X) :-
Lower1 < Upper,
Lower2 is Lower1 + 1,
between(Lower2, Upper, X).
我不明白为什么它需要递归。的逻辑定义between
可能是:
between(Lower, Upper, Something):-
Lower =< Upper,
Lower =< Something,
Something =< Upper.
我试过了gprolog
,它可以工作,但只适用于简单的查询:
| ?- between(0,5,1).
yes
对于带有变量的查询,我得到:
| ?- between(0,5,X).
uncaught exception: error(instantiation_error, (=<)/2)
我真的不明白为什么。
我有点想Prolog需要某种参考编号来统一变量,但为什么会出现神秘错误(=<)/2
?