Universo y grafo de una relación binaria
Usando el tipo de las relaciones binarias, definir las funciones
universo :: Eq a => Rel a -> [a] grafo :: Eq a => ([a],[(a,a)]) -> [(a,a)]
tales que
-
universo r
es el universo de la relaciónr
. Por ejemplo,
λ> r = R ([1, 3],[(3, 1), (3, 3)]) λ> universo r [1,3]
-
grafo r
es el grafo de la relación r. Por ejemplo,
λ> grafo r [(3,1),(3,3)]
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
import Relaciones_binarias universo :: Eq a => Rel a -> [a] universo (R (u,_)) = u grafo :: Eq a => Rel a -> [(a,a)] grafo (R (_,g)) = g
Soluciones en Python
from typing import TypeVar A = TypeVar('A') Rel = tuple[list[A], list[tuple[A, A]]] def universo(r: Rel[A]) -> list[A]: return r[0] def grafo(r: Rel[A]) -> list[tuple[A, A]]: return r[1]