在哈斯克尔'重复'?

Pet*_*ter 13 haskell list

我对Haskell很新,我有一个简单的问题.

我和a和b一起使用什么函数会导致a,b次.

示例:
a = 4 | b = 3
将返回:
[4, 4, 4]

谢谢!

peo*_*oro 34

replicate:

replicate 3 4
Run Code Online (Sandbox Code Playgroud)

将会:

[4,4,4]
Run Code Online (Sandbox Code Playgroud)

当你知道你需要的函数类型是什么时(在这种情况下很明显你需要的函数有类似的类型Int -> a -> [a])你可以使用Hoogle来找到它.

  • 为了获得彼得描述的*exact*行为,使用:`flip replicate 4 3` (7认同)

小智 6

你也可以使用递归(虽然上面的解决方案当然应该是首选):

rep a 0 = []
rep a b = a : rep a (b-1)
Run Code Online (Sandbox Code Playgroud)