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

x88

Dúvida

4 mensagens neste tópico

Boas.

Estava a fazer uns exercícios de Haskell, e surgiu-me um problema que me deixou na dúvida. Se eu tiver os seguintes tipos definidos:

data Parentesco = Pai | Mae | Irmao | Tio | Avo | Primo (deriving Eq,Show)
type Telemovel = Int
data Contacto = Familia Parentesco Telemovel | Amigo Telemovel (deriving Eq,Show)
type Lista = [Contacto]

Como posso definir uma função que receba uma Lista, e a separe em (Lista,Lista), sendo que o primeiro elemento do par tem os contactos de Familia, e o segundo elemento tem os contactos de Amigos?

Agradeço desde já a resposta.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A maneira usual de resolver isso é através de pattern-matching.

Por exemplo, uma função simples que distingue qual o tipo de contacto.

tipoContacto :: Contacto -> String
tipoContacto (Familia p tlm) = "Contacto de " ++ (show p) ++ ", nº: " ++ (show tlm)
tipoContacto (Amigo tlm) = "Contacto de amigo, nº: " ++ (show tlm)

Como pode ver é simples. Para o teu caso é da mesma forma, tens é de usar um acumulador para o par de Lista.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora