List Haskell中的元组函数

List Haskell中的元组函数,list,haskell,tuples,higher-order-functions,List,Haskell,Tuples,Higher Order Functions,我有这个功能 getCode :: [(a, Int)] -> [a] getCode = concatMap (uncurry replicate)` 我想 getCode [(‘a’,4),(‘b’,1),(‘a’,3),(‘b’,1)] 输出 “aaaabaaab” 相反,我得到一个错误,它与预期的数据类型[(a,Int)]不匹配,而实际的数据类型是[(Int,a)]。我如何改变它使其工作?或任何其他方式?您可以使用以下功能交换replicate的参数: flip f以与f相

我有这个功能

getCode :: [(a, Int)] -> [a]
getCode = concatMap (uncurry replicate)`
我想

getCode [(‘a’,4),(‘b’,1),(‘a’,3),(‘b’,1)]
输出

“aaaabaaab” 

相反,我得到一个错误,它与预期的数据类型
[(a,Int)]
不匹配,而实际的数据类型是
[(Int,a)]
。我如何改变它使其工作?或任何其他方式?

您可以使用以下功能交换
replicate
的参数:

flip f
以与
f
相反的顺序获取其(前)两个参数


或者使用from
Data.Tuple
对元组而不是函数参数执行相同的操作:

getCode :: [(a, Int)] -> [a]
getCode = concatMap (uncurry replicate . swap)

谢谢你的帮助。我在想
reverse
函数。@BCKN
reverse
用于列表,但
swap
用于元组。谢谢你的记忆慢跑;)
getCode :: [(a, Int)] -> [a]
getCode = concatMap (uncurry (flip replicate))
getCode :: [(a, Int)] -> [a]
getCode = concatMap (uncurry replicate . swap)