在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