Questão 5: Escreva uma função recursiva em Haskell que receba uma lista de caracteres
(String) e retorne uma nova lista onde cada caracter de
é substituído pelo caracter imediatamente subsequente na tabela ASCII. Assuma que
é 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
proxima [] = []
proxima (c:cs) = succ c : proxima cs