Questão 6: Escreva uma função recursiva em Haskell que recebe uma lista de inteiros
e retorna uma lista
com os elementos de
em ordem invertida.
Passo 1
O enunciado pede para criar em Haskell uma função recursiva que recebe uma lista de inteiros p e devolve a lista q com os elementos de p invertidos. O conteúdo envolve recursão em listas, identificando o caso base (lista vazia) e o passo recursivo (processar a cabeça e recusar no final).
Passo 2
Identificamos o caso base: se a lista de entrada for vazia, então sua inversão também é a lista vazia. Em Haskell, escrevemos: recReverse [] = [].
Passo 3
Definimos o passo recursivo: para uma lista não vazia com cabeça x e cauda xs (ou seja, (x:xs)), primeiro invertemos xs recursivamente e depois concatenamos x ao final do resultado. Em Haskell usamos o operador (++) para isso.
Passo 4
Combinando assinatura de tipo, caso base e passo recursivo, obtemos a definição completa da função em Haskell.
Resposta
recReverse [] = []
recReverse (x:xs) = recReverse xs ++ [x]