Questão 40: converteMSet
Voltar
Considere que se usa o tipo [(a,Int)]
para representar multi-conjuntos de elementos de a. Considere ainda que nestas listas não há pares cuja primeira componente coincida, nem cuja segunda componente seja menor ou igual a zero.
Defina a função converteMSet :: [(a,Int)] -> [a]
que converte um multi-conjuto na lista dos seus elementos.
Exemplo
> converteMSet [(’b’,2), (’a’,4), (’c’,1)]
"bbaaaac"
Resolução
converteMSet :: [(a,Int)] -> [a]
converteMSet [] = []
converteMSet ((x,1):xs) = x : converteMSet xs
converteMSet ((x,n):xs) = x : converteMSet ((x,n-1) : xs)