Usando el tipo de las relaciones binarias, definir las funciones
universo :: Eq a => Rel a -> [a]
grafo :: Eq a => ([a],[(a,a)]) -> [(a,a)] |
universo :: Eq a => Rel a -> [a]
grafo :: Eq a => ([a],[(a,a)]) -> [(a,a)]
tales que
universo r
es el universo de la relación r
. Por ejemplo,
λ> r = R ([1, 3],[(3, 1), (3, 3)])
λ> universo r
[1,3] |
λ> r = R ([1, 3],[(3, 1), (3, 3)])
λ> universo r
[1,3]
grafo r
es el grafo de la relación r. Por ejemplo,
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 |
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] |
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]