Duda con Haskell

Iniciado por maritere22, 22 Diciembre 2013, 10:57 AM

0 Miembros y 1 Visitante están viendo este tema.

maritere22

Hola!
Estoy atascada en la realización de un ejercicio de Haskell.
Se trata de una operación que obtiene una lista con todos los elementos que NO son adyacentes a un nodo dado.
Luego hay que hacer otra función que añada un arco entre dicho nodo y cada uno de sus no adyacentes.

Esto es lo que yo he intentado hacer para la lista de no adyacentes, no sé si estará bien, ¿me lo podéis revisar?:


data Grafo a = GVacio | Nodo a (Grafo a) | Arco a a (Grafo a) deriving (Show, Eq)

adyacentes :: (Eq a) => a -> a -> Grafo a -> Bool
adyacentes x y (Arco u v g) = x==u && y==v || x==v && y==u || adyacentes x y g
adyacentes _ _ _ = False

noadylista :: (Eq a) => Grafo a -> a -> [a]
noadylista GVacio _ = []
noadylista (Arco x y g) a = if ((adyacentes a x g))
                                       then (noadylista (Nodo y g) a)
                                      else x:(noadylista (Nodo y g) a)


La parte de poner el arco sí que no sé como hacerla...
¿Alguien me puede dar la idea?
Muchas gracias de antemano

lnvisible

¿Has definido tú esa estructura de datos tan rara o es parte del enunciado del ejercicio?

maritere22

Venía así definida.
Muchas gracias ya me han ayudado  ;D