我试图匹配我创建的事实的子集,我的测试用例非常好!
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')。然后我添加了一个表示下一个潜在情况的事实,现在它已经很破碎了。我是Prolog的新手,不确定为什么会出现这种情况或如何解决它。
模糊(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)。
输出: ?- 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.
x([6,X,8,9],'woot') :- (X+0) > 7。欢迎提出建议。
输出: ?- 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.