学习序言 - 获取错误{> / 2:参数未充分实例化。}

时间:2015-10-21 09:48:06

标签: prolog

Nrs_Between(X,Y,Nr) :-
    Z>X,
    Z<Y,
    Nr is Z.

------------------------- * --------------------- --------

?- Nrs_Between(1,10,X).

等待输出:

Z = 2;
Z = 3;
etc

获取输出:

>/2: Arguments are not sufficiently instantiated.

------------------------- * --------------------- --------

任何?

1 个答案:

答案 0 :(得分:2)

</2>/2都会评估算术表达式。他们不接受自由变量。

经典解决方案:使用between/3

?- between(1, 3, X).
X = 1 ;
X = 2 ;
X = 3.

另一种选择:使用CLP(FD)

?- X #>= 1, X #=< 3, label([X]).
X = 1 ;
X = 2 ;
X = 3.