Haskell:生成并填充列表列表

时间:2017-02-08 18:54:28

标签: list haskell

我必须在Haskell制作一个游戏板,输入2个输入,指示板的高度和宽度。该板必须采用[[Int]]格式,并且所有空格必须填充整数1

例如makeBoard 2 3,应该返回 - > [[1,1,1],[1,1,1]]

1 个答案:

答案 0 :(得分:2)

您可以使用嵌套的replicate :: Int -> a -> [a]

makeBoard :: Num a => Int -> Int -> [[a]]
makeBoard h w = replicate h $ replicate w 1

replicate因此需要Int和元素a,并生成包含 n 次元素的列表[a]。因此,第二个replicate将返回一个列表,第一个复制将复制该列表h次。

请注意,replicate n x实际上相当于:

-- equivalent
replicate n x = take n $ repeat x

或更短:

replicate n = take n . repeat