Questão 5: Escreva uma função recursiva em Haskell que receba uma lista de caracteres p (String) e retorne uma nova lista onde cada caracter de p é substituído pelo caracter imediatamente subsequente na tabela ASCII. Assuma que p é composta apenas por caracteres alfabéticos e espaço.

Passo 1

O exercício pede uma função recursiva em Haskell que receba uma String (lista de Char) e retorne outra String onde cada caractere foi substituído pelo próximo na tabela ASCII. Vamos usar recursão em listas e a função succ (da classe Enum) para avançar um caractere.

Passo 2

Em Haskell, String é sinônimo de [Char], então podemos usar pattern matching com dois casos: lista vazia ([]) e lista não-vazia (c:cs).

Passo 3

Para o caso base, quando a lista é vazia, não há caracteres para processar, então retornamos []

Passo 4

Para o caso recursivo, tomamos o primeiro caractere c, aplicamos succ c para obter o próximo caractere na tabela ASCII, e chamamos a função recursivamente em cs para processar o restante

Resposta

proxima :: String -> String
proxima [] = []
proxima (c:cs) = succ c : proxima cs

Exercícios relacionados