Questão 12: concat
Voltar
Apresente uma definição recursiva da função (pré-definida) concat :: [[a]] -> [a]
que concatena as listas de uma lista.
Exemplo
> concat [[1],[2,2],[3],[4,4,4],[5],[4]]
[1,2,2,3,4,4,4,5,4]
Resolução
concat :: [[a]] -> [a]
concat [] = []
concat (h:t) = h ++ concat t
Explicação
Nesta questão, o nosso objetivo é unir várias sub-listas. Ora, a função (++)
, definida na questão 3, une duas listas, ou sub-listas, neste caso, por isso apenas precisamos de a usar de forma recursiva ao longo da nossa lista.
concat :: [[a]] -> [a]
concat [] = []
concat (h:t) = h ++ concat t