学习prolog-获取错误{>;/2:参数没有充分实例化。}

学习prolog-获取错误{>;/2:参数没有充分实例化。},prolog,Prolog,正在等待输出: ?- Nrs_Between(1,10,X). 获取输出: Z = 2; Z = 3; etc -------------------------*----------------------------- Nrs_Between(X,Y,Nr) :- Z>X, Z<Y, Nr is Z. 有人吗?两个/2都计算算术表达式。它们不接受自由变量 经典解决方案:使用 另一个选择:使用 ?-X#>=1,X#=

正在等待输出:

?- Nrs_Between(1,10,X).
获取输出:

Z = 2;
Z = 3;
etc
-------------------------*-----------------------------

Nrs_Between(X,Y,Nr) :-
    Z>X,
    Z<Y,
    Nr is Z.
有人吗?

两个
/2
都计算算术表达式。它们不接受自由变量

经典解决方案:使用

另一个选择:使用

?-X#>=1,X#=<3,标签([X])。
X=1;
X=2;
X=3。

谢谢您的回答!我知道我可以使用between,但我找不到如何从范围中只过滤出偶数。。。这才是真正的问题。@FiedbergNichenko你应该重新表述你的问题。比如,问一个新问题或编辑你问过的问题。在评论中回答你真正的问题,作为评论,是愚蠢的。确保你的问题有一个描述性的标题。请务必阅读@FiedbergNichenko,重点是,上述两种解决方案都离只获得奇数作为解决方案只有一步之遥。但这根本不是你的问题所在……你的代码在语法上是无效的。所以我怀疑你是否真的得到了你声称的产出。
>/2: Arguments are not sufficiently instantiated.
?- between(1, 3, X).
X = 1 ;
X = 2 ;
X = 3.
?- X #>= 1, X #=< 3, label([X]).
X = 1 ;
X = 2 ;
X = 3.