Questão 39: elemMSet
Voltar
Considere que se usa o tipo [(a,Int)]
para representar multi-conjuntos de elementos de a. Considere ainda que nestas listas não há pares cuja primeira componente coincida, nem cuja segunda componente seja menor ou igual a zero.
Defina a função elemMSet :: Eq a => a -> [(a,Int)] -> Bool
que testa se um elemento pertence a um multi-conjunto.
Exemplo
> elemMSet ’a’ [(’b’,2), (’a’,4), (’c’,1)]
True
> elemMSet ’d’ [(’b’,2), (’a’,4), (’c’,1)]
False
Resolução
elemMSet :: Eq a => a -> [(a,Int)] -> Bool
elemMSet _ [] = False
elemMSet a ((x,_):xs) = a == x || elemMSet a xs