我希望在SWI-Prolog中有一个大小为N x N的矩阵.一个可能的解决方案是创建一个N个大小为N的列表,但现在确定如何在Prolog中编写代码.
length_list(N, L) :- length(L, N). n_matrix(N, Xss) :- length(Xss, N), maplist(length_list(N),Xss). maplist(_, []). maplist(C, [X|Xs]) :- call(C,X), maplist(C, Xs).
为了避免尴尬的辅助定义,我们可能会使用library(lambda)
:
n_matrix(N, Xss) :- length(Xss, N), maplist(N+\Xs^length(Xs,N),Xss).