我正在尝试生成具有指定维度的列表列表。 此列表的数据类型如下所示:
data A = X | Y | Z
所以列表的类型为[[ A ]]。 (A是Show类的一个实例,所以不要担心)。
用户提供某个维度(假设宽度= 3,高度= 4),因此内容可能如下所示:
[[X,Y,Z],
[Y,Y,X],
[Y,X,Z],
[X,Z,Z]]
如何生成宽度 X 高度'矩阵',这些值目前并不重要。
提前感谢。
编辑:(为清晰起见)
我只是想知道如何生成一个'矩阵'类型[[A]]的宽度和高度作为用户输入。 所以width =内部列表中元素的数量,height =外部列表中列表的数量。
答案 0 :(得分:4)
要生成由特定元素填充的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
。