Free Palestine and Lebanon 🍉 Stop the Genocide
Haskell Logo

Programação Funcional

Questão 23: isSuffixOf

Voltar

Apresente uma definição recursiva da função (pré-definida) isSuffixOf :: Eq a => [a] -> [a] -> Bool que testa se uma lista é sufixo de outra.

Exemplo

> isSuffixOf [20,30] [10,20,30]
True
> isSuffixOf [10,30] [10,20,30]
False

Resolução

Clica para revelar

isSuffixOf :: Eq a => [a] -> [a] -> Bool
isSuffixOf [] _ = True
isSuffixOf _ [] = False
isSuffixOf l l'@(_:t) = l == l' || isSuffixOf l t

Explicação

Clica para revelar

l'@(h:t) significa que a lista l' tem cabeça h e cauda t. Isto é equivalente a escrever:

isSuffixOf l l' = ...
    where (h:t) = l'