gpt4 book ai didi

prolog - 实现我自己的后继谓词

转载 作者:行者123 更新时间:2023-12-01 12:37:42 27 4
gpt4 key购买 nike

我知道 Prolog 有自己的谓词来处理继承者,但我想自己做一个练习。

这是我目前的积极继任者的代码:

successor(0,1).
successor(X,Y) :-
X > 0,
Xx is X-1;
successor(Xx,Yx),
Y is Yx + 1.

当我输入 successor(O,1) ,
我有 true successor(O,X)返回 X = 1 successor(X,1)返回 X = 0 successor(2,X)返回 X = 3
我没有成功做的最后一件事是
successor(X,2)

它抛出并出错:
ERROR: >/2: Arguments are not sufficiently instantiated

我做了一个跟踪,发现它正在比较一个未初始化的变量( X )和 0
这是因为我要求这样做,但我不知道如何解决这个问题以使最后一次通话正常工作并且仍然有其他工作。

最佳答案

使用 !

:- use_module(library(clpfd)).

我们定义 successor/2像这样:
successor(X0,X1) :-
X0 #>= 0,
X1 #= X0 + 1.

示例查询:
?- successor(_,0).
false.

?- N #< 0, successor(N,_).
false.

?- successor(X,1).
X = 0.

?- successor(X,2).
X = 1.

?- successor(2,X).
X = 3.

?- successor(X,Y).
X in 0..sup, X+1 #= Y.

关于prolog - 实现我自己的后继谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118980/

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