Jak*_*ake 3 haskell functional-programming list
给定类型的元组(Int, a),例如(n,c),我希望构造一个列表[a],其中该元件c被重复n多次,即,(4, 'b')变为"bbbb".我目前的解决方案如下:
decode :: (Int, a) -> [a]
decode (n, a) = map (\x -> a) [1..n]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我正在映射一个匿名函数,该函数总是返回a一个n元素列表,即前n个正整数.有没有更有效的方法来做到这一点?我对构建整数列表并从不使用它感到很难过.另一种解决方案是使用辅助函数并递归n,但这看起来很混乱并且过于复杂.是否有类似于以下python代码的东西?
'b'*4
Run Code Online (Sandbox Code Playgroud)
uncurry replicate
Prelude> :t uncurry replicate
uncurry replicate :: (Int, b) -> [b]
Prelude> uncurry replicate (4, 'b')
"bbbb"
Run Code Online (Sandbox Code Playgroud)
你想要的replicate.
找到这些东西的好方法:http: //haskell.org/hoogle/?intel = Int +-%3E + a + - %3E +%5Ba%5D