gpt4 book ai didi

Prolog 参数没有充分实例化

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

我正在尝试匹配我正在创建的事实的子集,并且我的测试用例运行得很好!

x([1,2,3,4],'bleah').x([1,2,4],'bleah2').x([1,2],'bleah8').x([1,3,4],'bleah3').x([5,6,7,8],'bleah5').x([6,7,8,9],'bleah6').fuzzy(X,R) :- x(Z, R),  subset(X,Z) .remaining(X,Y,D,M) :- x(Z,D) , select(X,Z,N), select(Y,N,M).pair(X,Y,R) :- x([X,Y],R) ; x([Y,X],R).Output:?- x([1,2|REST],D).REST = [3, 4],D = bleah ;REST = [4],D = bleah2 ;REST = [],D = bleah8 ;false.?- pair(2,1,D).D = bleah8 ;false.?- fuzzy([2,1],R).R = bleah ;R = bleah2 ;R = bleah8 ;false.?- remaining(2,1,D,M).D = bleah,M = [3, 4] ;D = bleah2,M = [4] ;D = bleah8,M = [] ;false.

然后我添加了一个事实来代表我的下一个潜在案例,现在它已经完全崩溃了。我是 Prolog 新手,我不确定这是为什么或者如何修复它。

x([6,X,8,9],'woot') :- (X+0) > 7.Output:?- x([1,2|REST],D).REST = [3, 4],D = bleah ;REST = [4],D = bleah2 ;REST = [],D = bleah8 ;false.?- pair(2,1,D).D = bleah8 ;false.?- fuzzy([2,1],R).R = bleah ;R = bleah2 ;R = bleah8 ;ERROR: >/2: Arguments are not sufficiently instantiated^  Exception: (9) _G260+0>7 ? abort% Execution Aborted?- remaining(2,1,D,M).D = bleah,M = [3, 4] ;D = bleah2,M = [4] ;D = bleah8,M = [] ;ERROR: >/2: Arguments are not sufficiently instantiated^  Exception: (10) _G270+0>7 ? abort% Execution Aborted?- x([_,15,_,_],D).D = woot.

欢迎提出建议。

最佳答案

X只能是自然数吗?如果是,那么您可以更改规则

x([6,X,8,9], 'woot') :- (X+0) > 7.

x([6, X, 8, 9], 'woot') :- between(8, inf, X).

这至少在 SWI-Prolog 中有效:

?- x(A, B).
A = [6, 8, 8, 9],
B = woot ;
A = [6, 9, 8, 9],
B = woot ;
A = [6, 10, 8, 9],
B = woot ;
...

关于Prolog 参数没有充分实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2044643/

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