relacion-0.1: A relation data structure.

Data.Relacion

Contents

Description

El contenedor Relacin modela asociaciones dos elementos. Ofrece bsqueda eficiente por cualquiera de los dos elementos.

Es similar a Data.Map en que asocia llaves (k) con valores (v).

A diferencia del contenedor Data.Map, un elemento puede estar asociado ms de una vez.

Los dos propsito fundamentales de esta estructura son

  1. Asociar elementos. 2. Ofrecer eficiencia en bsquedas por cualquiera de los dos elementos.

Como no estn implementados ni map ni fold, debe convertir la estructura en una lista para procesarla secuencialmente.

Synopsis

El tipo Relacin

data Relación a b Source

Instances

(Eq a, Eq b) => Eq (Relación a b) 
(Ord a, Ord b) => Ord (Relación a b) 
(Show a, Show b) => Show (Relación a b) 

Funcionalidad provista:

Consultas

size :: Relación a b -> IntSource

size r devuelve la cantidad de tuplas en la relacin.

null :: Relación a b -> BoolSource

True si la relacin est vaca.

Construccin

empty :: Relación a bSource

Construye una relacin sin elementos.

fromList :: (Ord a, Ord b) => [(a, b)] -> Relación a bSource

La lista debe tener formato [(k1, v1), (k2, v2),..,(kn, vn)].

singleton :: a -> b -> Relación a bSource

Construye una relacin compuesta por la asociacin de x y y.

Operaciones

union :: (Ord a, Ord b) => Relación a b -> Relación a b -> Relación a bSource

La relacin que resulta de unir dos relaciones r y s.

unions :: (Ord a, Ord b) => [Relación a b] -> Relación a bSource

Concatena una lista de relaciones en una sola relacin.

insert :: (Ord a, Ord b) => a -> b -> Relación a b -> Relación a bSource

Inserta la asociacin entre x y y en la relacin r

delete :: (Ord a, Ord b) => a -> b -> Relación a b -> Relación a bSource

Remueve una asociacin de la relacin.

lookupDom :: Ord a => a -> Relación a b -> Maybe (Set b)Source

El conjunto de valores asociados a un valor del dominio.

lookupRan :: Ord b => b -> Relación a b -> Maybe (Set a)Source

El conjunto de valores asociados a un valor del rango.

memberDom :: Ord a => a -> Relación a b -> BoolSource

True si el elemento x pertenece al dominio de r .

memberRan :: Ord b => b -> Relación a b -> BoolSource

True si el elemento pertenece al rango.

member :: (Ord a, Ord b) => a -> b -> Relación a b -> BoolSource

True si la relacin contiene la asociacin x y y

notMember :: (Ord a, Ord b) => a -> b -> Relación a b -> BoolSource

True si un par no pertenece a la relacin

Conversin

toList :: Relación a b -> [(a, b)]Source

dom :: Relación a b -> Set aSource

Devuelve el dominio de la relacin como un conjunto.

ran :: Relación a b -> Set bSource

Devuelve el rango de la relacin como un conjunto.

Utilitarios

compactarSet :: Ord a => Set (Maybe (Set a)) -> Set aSource

Compacta un conjunto de conjuntos cuyos valores que pueden ser Just (Set x) o Nothing.

Los casos Nothing son purgados.

Es similar a concat.

(|$>) :: (Ord a, Ord b) => Set a -> Set b -> Relación a b -> Set bSource

(<$|) :: (Ord a, Ord b) => Set a -> Set b -> Relación a b -> Set aSource

Implementacin primitiva para el operador de seleccin a la izquierda o a la derecha.

PICA provee dos operadores |> y <|, respectivamente |$> y <$| en esta biblioteca, que trabajan sobre una Relacin y OIS's. PICA expone los operadores definidos ac, para no romper con la abstraccin del tipo de datos Relacin y porque teniendo acceso a los componentes escondidos de Relacin, es ms eficiente la implementacin de la operacin de restriccin.

(a <$| b) r

se lee: por cada elemento b del conjunto B, seleccione un elemento a del conjunto A si a est relacionado con b en la relacin r.

(a |$> b) r

se lee: por cada elemento a del conjunto A, seleccione un elemento b del conjunto B si a est relacionado con b en la relacin r.

Con respecto a los operadores de restriccin de dominio y restriccin de rango del lenguaje Z que devuelven una relacin, los descritos son diferentes y devuelven el dominio o el rango.

(<|) :: (Ord a, Ord b) => Set a -> Relación a b -> Relación a bSource

Restriccin de dominio para una relacin. Modelado como en z.

(|>) :: (Ord a, Ord b) => Relación a b -> Set b -> Relación a bSource

Restriccin de rango para una relacin. Modelado como en z.