Prolog 检查变量是否在确定时间内固定/实例化

Prolog 检查变量是否在确定时间内固定/实例化,prolog,Prolog,我正在使用CLPFD,我希望确保一个变量包含一个整数,以避免变量未完全实例化的错误。因此,我尝试检查变量是否绑定。 我试过: nonvar(Var) ground(Var) integer(Var) 它们都会导致耗尽全局堆栈。是否可以在确定的时间内检查Prolog中的变量状态?其他因素最有可能导致您正在观察的全局堆栈外错误。代码?如果您遇到“变量未完全实例化”错误,则使用nonvar/1或ground/1或integer/1可能是一个糟糕的解决方法,具体取决于您使用的总体代码。你应该在代码中显

我正在使用CLPFD,我希望确保一个变量包含一个整数,以避免
变量未完全实例化的错误
。因此,我尝试检查变量是否绑定。 我试过:

nonvar(Var)
ground(Var)
integer(Var)

它们都会导致耗尽全局堆栈。是否可以在确定的时间内检查Prolog中的变量状态?

其他因素最有可能导致您正在观察的全局堆栈外错误。代码?如果您遇到“变量未完全实例化”错误,则使用nonvar/1ground/1integer/1可能是一个糟糕的解决方法,具体取决于您使用的总体代码。你应该在代码中显示这些错误的位置,并寻找另一种解决方法。问题在于列表搜索。它搜索一个元素,然后在下一个元素上添加该元素的外来项,而不是从列表中获取它。我想我可以通过检查变量接地来解决这个问题,但我错了。这个问题在这里得到了充分的解释:在下一个元素上,它添加了一个元素的外来条目,而不是从列表中获取它。这听起来像是谓词设计的问题。检查接地是否掩盖了这一点。