gpt4 book ai didi

序言错误 : is/2: Arguments are not sufficiently instantiated

转载 作者:行者123 更新时间:2023-12-02 01:20:32 25 4
gpt4 key购买 nike

我是 Prolog 的新手。我写了一个很短的程序如下:

plus(X,Y,R):- R is X+Y.

当我运行它时,我遇到以下问题:
?- plus(1,1,2).
true
?- plus(1,1,X).
X=2
?- plus(1,X,2).
ERROR: is/2: Arguments are not sufficiently instantiated

为什么会发生错误?如何修改代码以实现相同的目标?
谢谢大家帮助我!!!

最佳答案

这不起作用的原因是 is/2 是(就像)一个函数。给定 X,Y 它计算 X+Y 并将其存储到 R(它用 X+Y 实例化 R)。如果提供了 R 并且 X 或 Y 是一个 var(它尚未实例化),那么它如何计算 X+Y,这就是实例化错误的原因。

要解决这个问题,您应该使用更相关的模块:CLPFD

:- use_module(library(clpfd)).

plus(X,Y,R):- R #= X+Y.

一些例子:
**?- [ask].
true.
?- plus(1,1,2).
true.
?- plus(1,1,X).
X = 2.
?- plus(1,X,2).
X = 1.
?- plus(X,Y,2).
X+Y#=2.
?- plus(X,Y,R).
X+Y#=R.**

您可以在最后一种情况下看到作为答案给出的 X、Y 和 R 是如何相关的。

关于序言错误 : is/2: Arguments are not sufficiently instantiated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com