Questão 6: Escreva uma função recursiva em Haskell que recebe uma lista de inteiros p e retorna uma lista q com os elementos de p 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 :: [Int] to [Int]
recReverse [] = []
recReverse (x:xs) = recReverse xs ++ [x]

Exercícios relacionados