Prolog试图使固定大小的空列表

Prolog试图使固定大小的空列表,prolog,swi-prolog,Prolog,Swi Prolog,我试图在prolog中列出以下维度: [ [[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]], [[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]], [[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]], [[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]], [[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]], [[_,_,_,_,_,_,

我试图在prolog中列出以下维度:

[
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]]
]
因此,一个包含9个列表的列表包含2个包含9个元素的列表

我尝试了以下方法:

createEmptyView(ReturnList, Size) :-
  length(ReturnList, Size),
  ( for(Y, 1, Size), param(ReturnList, Size) do
      Row is ReturnList[Y],
      length(Row, 2),
      Xlist = Row[0],
      Ylist = Row[1],
      length(Xlist, Size),
      length(Ylist, Size)
  ).
其中Size=9,ReturnList是输出

检索Xlist和Ylist时出错。 我还尝试了以下方法来提取它们:

[Xlist, Ylist] is Row,
Row = [Xlist, Ylist | _ ],
但它似乎不起作用。我做错了什么

mylength(X,Y):-
    length(Y,X).

list_sizes(Size,List):-
    maplist(mylength(Size),List).
然后查询:

?- length(List,9), list_sizes(2,List), maplist(list_sizes(9),List).

您可以在没有助手mylength/2的情况下将其缩短,并使用lambda表达式,例如使用库yall

所以你想要一个9x2x9非标准矩阵?