在Prolog中创建一个N×N矩阵(使用列表?)

Tan*_*nay 2 list prolog

我希望在SWI-Prolog中有一个大小为N x N的矩阵.一个可能的解决方案是创建一个N个大小为N的列表,但现在确定如何在Prolog中编写代码.

fal*_*lse 6

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).
Run Code Online (Sandbox Code Playgroud)

为了避免尴尬的辅助定义,我们可能会使用library(lambda):

n_matrix(N, Xss) :-
    length(Xss, N),
    maplist(N+\Xs^length(Xs,N),Xss).
Run Code Online (Sandbox Code Playgroud)