2014-10-27 57 views
1

我想要生成一個具有指定維度的列表列表。 此列表的數據類型看起來是這樣的:在Haskell中生成給定尺寸的2D列表

data A = X | Y | Z 

所以列表的類型爲[一個]。 (A是Show類的一個實例,所以不用擔心)。

用戶給出了在一定尺寸(可以說寬度= 3和高度= 4),因此將其含量可能看起來像這樣:

[[X,Y,Z], 
[Y,Y,X], 
[Y,X,Z], 
[X,Z,Z]] 

如何可以生成寬度 X 高度 '矩陣',這些值目前並不是那麼重要。

在此先感謝。

編輯:(出於清楚的原因)

只想知道如何產生的類型的「矩陣」 [[A]]與寬度和高度作爲用戶輸入。 So width =內部列表中元素的數量,height =外部列表中列表的數量。

回答

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.MapData.Array