Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
brunofmf

Dúvida numa função com "Maybe"!

Recommended Posts

brunofmf

Boas pessoal!

Tenho aqui mais uma dúvida. :)

A questão é a seguinte :

"Considere o seguinte tipo para representar valores opcionais:

data Maybe a = Nothing | Just a

Defina a função catMaybes :: [Maybe a] -> [a] que extrai todo o conteúdo da lista de entrada."

Eu não estou a perceber muito bem o que é que é pedido na pergunta, mas eu fiz o seguinte :

catMaybes :: [Maybe a] -> [a]
catMaybes Nothing = []
catMaybes Just x = [x]

Se alguém me puder ajudar agradecia!! :)

Abraço!

Share this post


Link to post
Share on other sites
Betovsky

Estás no caminho certo.

O único ponto que tens de abordar agora é que a função catMaybes recebe uma lista de Maybe em vez de apenas um Maybe.


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
brunofmf

E fica assim?

catMaybes :: [Maybe a] -> [a]
catMaybes Nothing = []
catMaybes [Just x] = [x]

Obrigado pela ajuda!!! :cheesygrin:

Share this post


Link to post
Share on other sites
joxnas

oh bruno..

catMaybes recebe uma  lista de  Maybes, certo?

Onde é que Nothing é uma lista ? :)

além disso, aí so tas a ter em conta listas com um elemento, já reparaste? :)

[Just x] é uma lista com apenas um elemento...

catMaybes :: [Maybe a] -> [a]
catMaybes [] = []
catMaybes (x:xs) = case x of
                                           Nothing -> catMaybes xs
                                           (Just y)->y:(catMaybes xs)

Nao testei mas deve ser assim.

Pelo menos acho que foi assim k fiz no teste...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.