Questão 3: Escreva uma função recursiva em Haskell que receba uma lista de Int e retorne True se todos os elementos da lista forem números pares, e False, caso contrário.
Passo 1
O enunciado pede uma função recursiva em Haskell que receba uma lista de Int e retorne True se todos os elementos forem pares, ou False caso contrário. O conteúdo é recursão sobre listas e teste de paridade (função even).
Passo 2
Identificamos o caso base: quando a lista está vazia ($ [] $), não há elemento ímpar, então deve retornar True.
Passo 3
Para o caso recursivo, ao receber (x:xs), primeiro verificamos se x é par usando $ even x $. Se x for par, precisamos que todo o resto da lista (xs) também satisfaça a condição, então aplicamos recursão.
Passo 4
Agrupando tudo, usamos correspondência de padrões em Haskell:
Podemos testar a função no GHCi:
Podemos testar a função no GHCi:
- allEven [] ==> True
- allEven [2,4,6] ==> True
- allEven [2,3,4] ==> False
Resposta
allEven :: [Int] -> Bool
allEven [] = True
allEven (x:xs) = even x && allEven xs
allEven [] = True
allEven (x:xs) = even x && allEven xs