Free Palestine and Lebanon 🍉 Stop the Genocide
Haskell Logo

Programação Funcional

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

Clica para revelar

concat :: [[a]] -> [a]
concat [] = []
concat (h:t) = h ++ concat t

Explicação

Clica para revelar

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