在Haskell中生成具有给定尺寸的二维列表

在Haskell中生成具有给定尺寸的二维列表,haskell,dynamically-generated,Haskell,Dynamically Generated,我正在尝试生成具有指定维度的列表列表。 此列表的数据类型如下所示: data A = X | Y | Z [[X,Y,Z], [Y,Y,X], [Y,X,Z], [X,Z,Z]] 因此,该列表的类型为[[A]]。A是Show类型类的实例,所以不用担心 用户在某个维度中给出宽度=3,高度=4,因此内容可能如下所示: data A = X | Y | Z [[X,Y,Z], [Y,Y,X], [Y,X,Z], [X,Z,Z]] 如何生成宽度X高度的“矩阵”,目前这些值并不那么重要

我正在尝试生成具有指定维度的列表列表。 此列表的数据类型如下所示:

data A = X | Y | Z
[[X,Y,Z],
 [Y,Y,X],
 [Y,X,Z],
 [X,Z,Z]]
因此,该列表的类型为[[A]]。A是Show类型类的实例,所以不用担心

用户在某个维度中给出宽度=3,高度=4,因此内容可能如下所示:

data A = X | Y | Z
[[X,Y,Z],
 [Y,Y,X],
 [Y,X,Z],
 [X,Z,Z]]
如何生成宽度X高度的“矩阵”,目前这些值并不那么重要

提前谢谢

编辑:为了清晰起见

我只想知道如何生成一个[[a]]类型的“矩阵”,宽度和高度作为用户输入。
因此,宽度=内部列表中的元素数,高度=外部列表中的列表数。

要生成由特定元素填充的3x4嵌套列表,可以使用:

data A = X | Y | Z deriving (Show)
generate width height = replicate height . replicate width

main = print $ generate 3 4 X
得到[[X,X,X],[X,X,X],[X,X,X],[X,X,X]]


请注意,如果目标是频繁进行点更新,嵌套列表并不能很好地替代C/Java中的2D数组。在这些情况下,请使用Data.Map或Data.Array。

要生成由特定元素填充的3x4嵌套列表,可以使用:

data A = X | Y | Z deriving (Show)
generate width height = replicate height . replicate width

main = print $ generate 3 4 X
得到[[X,X,X],[X,X,X],[X,X,X],[X,X,X]]

请注意,如果目标是频繁进行点更新,嵌套列表并不能很好地替代C/Java中的2D数组。在这些情况下,请使用Data.Map或Data.Array