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:
  • 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

Exercícios relacionados