ATE meia noite de 14/10
Assuma que um contador é implementado como uma lista de tuplas onde o primeiro elemento da tupla é a chave e o segundo a contagem relativa a chave.
Assuma a função =soma1= que dado uma chave e um contador (a lista) soma 1 na contagem relativa a chave no contador, ou inclui a chave na lista com contagem 1 se ela não tiver lista.
soma1 :: (Eq a) => a -> [(a,Int)] -> [(a,Int)]
soma1 “abc” [(“efg”,4),(“abc”,2),(“qwe”,1)] ==> [(“efg”,4),(“abc”,3),(“qwe”,1)] soma1 ‘a’ [(‘b’,1),(‘d’,3),(‘u’,2)] ==> [(‘a’,1),(‘b’,1),(‘d’,3),(‘u’,2)]
Implemente a função vogalmaiscomum
que dado um string retorna a vogal mais comum no string. Considerar que vogais maiúsculas e minúsculas contam como a mesma vogal. Se duas ou mais vogais tem a mesma contagem, sua função pode retornar qualquer uma dessas vogais
Utilize alguma função de alto nivel: map, filter, fold, composição, etc neste problema
que voce pode usar se quiser
elem :: (Eq a) => a -> [a] -> Bool
retorna True se o 1o argumento é membro da lista (2o argumento)
toLower :: Char -> Char
que se o argumento é uma letra maiúscula retorna a minúscula correspondente, e se for minúscula, retorna ela própria. Para usar o toLower
use, import Data.Char (toLower)
no seu programa (assunto a próxima aula)
snd :: (a,b) -> b
retorna o 2o elemento de uma tupla de 2
maximum :: Ord a => [a] -> a
retorna o maior elemento de uma lista