我想在 SICStus 中创建一个多维数组,它的作用与 ECLiPSe Dim 函数几乎相同。为此,我编写了这段代码,但不幸的是它总是进入无限循环。任何人都可以解决这个问题吗?
%multDimensional Array 2d
mult(X,Y,Final):- mult(X,Y,0,Final).
mult(X,_,X,[]).
mult(X,Y,Count,[A|B]) :- length(List,Y),
A = List,
Count1 is Count+1,
mult(X,Y,Count1,B).
%multDimensional Array 3d
mult2(Z,X,Y,Final):- mult2(X,Y,Z,0,Final),!.
mult2(_,_,Z,Z,[]).
mult2(X,Y,Z,Count,[A|B]):- multi(X,Y,0,Final),
Count1 is Count+1,
A = Final,
mult2(X,Y,Z,Count1,B).
multi(X,_,X,[]).
multi(X,Y,Count,[A|B]) :- length(List,Y),
A = List,
Count1 is Count+1,
multi(X,Y,Count1,B).