Free Palestine and Lebanon 🍉 Stop the Genocide
Haskell Logo

Programação Funcional

Questão 50: naoReparar

Voltar

Considere o seguinte tipo para representar o estado de um equipamento.

data Equipamento = Bom | Razoavel | Avariado deriving Show

Defina a função naoReparar :: [Equipamento] -> Int que determina a quantidade de equipamentos que não estão avariados

Exemplo

> naoReparar [Bom, Avariado, Bom, Razoavel, Avariado]
3

Resolução

Clica para revelar

data Equipamento = Bom | Razoavel | Avariado
    deriving Show

naoReparar :: [Equipamento] -> Int
naoReparar [] = 0
naoReparar (Bom:t) = 1 + naoReparar t
naoReparar (Razoavel:t) = 1 + naoReparar t
naoReparar (Avariado:t) = naoReparar t

Resolução

Clica para revelar

data Equipamento = Bom | Razoavel | Avariado
    deriving Show

naoReparar :: [Equipamento] -> Int
naoReparar [] = 0
naoReparar (h:t) = case h of Avariado -> naoReparar t
                             _ -> 1 + naoReparar t