TAD de los conjuntos - Transformaciones entre conjuntos y listas
Utilizando el tipo abstracto de datos de los conjuntos definir las funciones
listaAconjunto :: [a] -> Conj a conjuntoAlista :: Conj a -> [a]
tales que
-
listaAconjunto xs
es el conjunto formado por los elementos dexs
. Por ejemplo,
λ> listaAconjunto [3, 2, 5] {2, 3, 5}
-
conjuntoAlista c
es la lista formada por los elementos del conjuntoc
. Por ejemplo,
λ> conjuntoAlista (inserta 5 (inserta 2 (inserta 3 vacio))) [2,3,5]
Comprobar con QuickCheck que ambas funciones son inversa; es decir,
conjuntoAlista (listaAconjunto xs) = sort (nub xs) listaAconjunto (conjuntoAlista c) = c