Free Palestine and Lebanon 🍉 Stop the Genocide
Haskell Logo

Programação Funcional

Questão 27: delete

Voltar

Apresente uma definição recursiva da função (pré-definida) delete :: Eq a => a -> [a] -> [a] que retorna a lista resultante de remover (a primeira ocorrência de) um dado elemento de uma lista.

Exemplo

> delete 2 [1,2,1,2,3,1,2]
[1,1,2,3,1,2]
> delete 4 [1,3,2,1,3,5]
[1,3,2,1,3,5]

Resolução

Clica para revelar

delete :: Eq a => a -> [a] -> [a]
delete _ [] = []
delete x (h:t)
    | x == h = t
    | otherwise = h : delete x t