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
isSuffixOf :: Eq a => [a] -> [a] -> Bool
isSuffixOf [] _ = True
isSuffixOf _ [] = False
isSuffixOf l l'@(_:t) = l == l' || isSuffixOf l t
Explicação
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'