En este manual se presentan ejemplos de las funciones de la librería de conjuntos Data.Set 0.5.5.1. En los ejemplos se supone que se han importado la siguiente librería
ghci> import Data.Set as S
(Set a)
es el tipo de los conjuntos con elementos de tipo a. Por ejemplo,ghci> let c1 = fromList [3,2,5,3]
ghci> :t c1
c1 :: Set Integer
ghci> c1
fromList [2,3,5]
ghci> let c2 = fromList [2,5,2,3]
ghci> c1 == c2
True
empty
es el conjunto vacío. Por ejemplo,ghci> empty
fromList []
(singleton x)
es el conjunto cuyo único elemento es x
. Por ejemplo,ghci> singleton 5
fromList [5]
(insert x c)
es el conjunto obtenido insertando el elemento x
en el conjunto c
. Por ejemplo,ghci> insert 7 (fromList [3,2,5])
fromList [2,3,5,7]
ghci> insert 2 (fromList [3,2,5])
fromList [2,3,5]
(delete x c)
es el conjunto obtenido eliminando el elemento x
del conjunto c
. Por ejemplo,ghci> delete 3 (fromList [3,2,5,3,4])
fromList [2,4,5]
ghci> delete 7 (fromList [3,2,5,3,4])
fromList [2,3,4,5]
(null c)
se verifica si c
es el conjunto vacío. Por ejemplo,ghci> S.null (fromList [])
True
ghci> S.null (fromList [5,2])
False
(size c)
es el número de elementos del conjunto c
. Por ejemplo,ghci> size (fromList [3,2,5,3,2,1])
4
(member x c)
se verifica si x
es un elemento del conjunto c
. Por ejemplo,ghci> member 5 (fromList [3,2,5])
True
ghci> member 7 (fromList [3,2,5])
False
(notMember x c)
se verifica si x
no es un elemento del conjunto c
. Por ejemplo,ghci> notMember 7 (fromList [3,2,5])
True
ghci> notMember 5 (fromList [3,2,5])
False
(lookupLT x c)
es justo el mayor elemento de c
menor que x
, si hay alguno y Nothing
, en caso contrario. Por ejemplo,ghci> lookupLT 5 (fromList [2,4,3,5,7])
Just 4
ghci> lookupLT 2 (fromList [2,4,3,5,7])
Nothing
(lookupGT x c)
es justo el menor elemento de c
mayor que x
, si hay alguno y Nothing
, en caso contrario. Por ejemplo,ghci> lookupGT 2 (fromList [2,4,3,5,7])
Just 3
ghci> lookupGT 7 (fromList [2,4,3,5,7])
Nothing
(lookupLE x c)
es justo el mayor elemento de c
menor o igual que x
, si hay alguno y Nothing
, en caso contrario. Por ejemplo,ghci> lookupLE 5 (fromList [2,4,3,5,7])
Just 5
ghci> lookupLE 6 (fromList [2,4,3,5,7])
Just 5
ghci> lookupLE 1 (fromList [2,4,3,5,7])
Nothing
(lookupGE x c)
es justo el menor elemento de c
mayor o igual que x
, si hay alguno y Nothing
, en caso contrario. Por ejemplo,ghci> lookupGE 5 (fromList [2,4,3,5,7])
Just 5
ghci> lookupGE 6 (fromList [2,4,3,5,7])
Just 7
ghci> lookupGE 9 (fromList [2,4,3,5,7])
Nothing
(isProperSubsetOf c1 c2)
se verifica si c1
es un subconjunto propio de c2
. Por ejemplo,ghci> isProperSubsetOf (fromList [3,5]) (fromList [3,2,5])
True
ghci> isProperSubsetOf (fromList [3,5,2]) (fromList [3,2,5])
False
ghci> isProperSubsetOf (fromList [3,7]) (fromList [3,2,5])
False
(isSubsetOf c1 c2)
se verifica si c1
es un subconjunto de c2
. Por ejemplo,ghci> isSubsetOf (fromList [3,5]) (fromList [3,2,5])
True
ghci> isSubsetOf (fromList [3,5,2]) (fromList [3,2,5])
True
ghci> isProperSubsetOf (fromList [3,7]) (fromList [3,2,5])
False
(findMin c)
es el menor elemento del conjunto c
. Por ejemplo,ghci> findMin (fromList [3,2,5])
2
ghci> findMin empty
*** Exception: Set.findMin: empty set has no minimal element
(findMax c)
es el mayor elemento del conjunto c
. Por ejemplo,ghci> findMax (fromList [3,2,5,4])
5
ghci> findMax empty
*** Exception: Set.findMax: empty set has no maximal element
(deleteMin c)
es el conjunto obtenido eliminando el menor elemento de c
. Por ejemplo,ghci> deleteMin (fromList [3,2,5])
fromList [3,5]
ghci> deleteMin empty
fromList []
(deleteMax c)
es el conjunto obtenido eliminando el mayor elemento de c
. Por ejemplo,ghci> deleteMax (fromList [3,2,5,4])
fromList [2,3,4]
ghci> deleteMax empty
fromList []
(deleteFindMin c)
es el par formado por el menor elemento de c
y el conjunto obtenido elimnando dicho elemento de c
. Por ejemplo,ghci> deleteFindMin (fromList [3,2,7,4])
(2,fromList [3,4,7])
(deleteFindMax c)
es el par formado por el mayor elemento de c
y el conjunto obtenido eliminando dicho elemento de c
. Por ejemplo,ghci> deleteFindMax (fromList [3,2,7,4])
(7,fromList [2,3,4])
(minView c)
es el par formado por el menor elemento de c
y el conjunto obtenido eliminando dicho elemento de c
o Nothing
si no tiene elementos. Por ejemplo,ghci> minView (fromList [3,2,7,4])
Just (2,fromList [3,4,7])
ghci> minView empty
Nothing
(maxView c)
es el par formado por el mayor elemento de c
y el conjunto obtenido eliminando dicho elemento de c
o Nothing
si no tiene elementos. Por ejemplo,ghci> maxView (fromList [3,2,7,4])
Just (7,fromList [2,3,4])
ghci> maxView empty
Nothing
(union cs c2)
es la unión de los conjuntos c1
y c2
. Por ejemplo,ghci> union (fromList [3,2,5]) (fromList [2,7,5])
fromList [2,3,5,7]
(unions cs)
es la unión de la lista de conjuntos cs
. Por ejemplo,ghci> unions [fromList [3,2], fromList [2,5], fromList [3,5,7]]
fromList [2,3,5,7]
(intersection cs c2)
es la intersecciṕn de los conjuntos c1
y c2
. Por ejemplo,ghci> intersection (fromList [3,2,5]) (fromList [2,7,5])
fromList [2,5]
(difference c1 c2)
es la diferencia de los conjuntos c1
y c2
. Por ejemplo,ghci> difference (fromList [2,5,3]) (fromList [1,4,5])
fromList [2,3]
(c1 \\ c2)
es la diferencia de los conjuntos c1
y c2
. Por ejemplo,ghci> fromList [2,5,3] \\ fromList [1,4,5]
fromList [2,3]
(filter p c)
es el conjunto de los elementos de c
que cumplen p
. Por ejemplo,ghci> S.filter even (fromList [3,2,5,7,8,6,9])
fromList [2,6,8]
(partition p c)
es el par cuya primera componente es el conjunto de los elementos de c
que cumplen p
y la segunda, por los que no lo cumplen. Por ejemplo,ghci> partition even (fromList [3,2,5,7,8,6,9])
(fromList [2,6,8],fromList [3,5,7,9])
(map f c)
es el conjunto obtenido aplicando a cada elemento de c
la función f
. Por ejemplo,ghci> S.map (+2) (fromList [3,2,7])
fromList [4,5,9]
(foldr f e c)
es el conjunto obtenido plegando por la derecha los elementos del conjunto c
a partir de e
. Por ejemplo,ghci> S.foldr (-) 0 (fromList [3,2,5,2])
4
ghci> 2-(3-(5-0))
4
(foldl f e c)
es el conjunto obtenido plegando por la izquierda los elementos del conjunto c
a partir de e
. Por ejemplo,ghci> S.foldl (-) 0 (fromList [3,2,5,2])
-10
ghci> ((0-2)-3)-5
-10
(foldr' f e c)
es la versión estricta de foldr
. Por ejemplo,ghci> let c = fromList [1..2000000]
ghci> S.foldr (+) 0 c
2000001000000
(1.85 secs, 282641652 bytes)
ghci> S.foldr' (+) 0 c
2000001000000
(0.42 secs, 176228860 bytes)
(foldl' f e c)
es la versión estricta de foldl
. Por ejemplo,ghci> let c = fromList [1..2000000]
ghci> S.foldl (+) 0 c
2000001000000
(1.80 secs, 277983108 bytes)
ghci> S.foldl' (+) 0 c
2000001000000
(0.39 secs, 172569700 bytes)
(elems c)
es la lista de los elementos del conjunto c
ordenados crecientemente. Por ejemplo,ghci> elems (fromList [3,2,5,2,1,5])
[1,2,3,5]
(toList c)
es la lista de los elementos del conjunto c
ordenados crecientemente. Por ejemplo,ghci> toList (fromList [3,2,5,2,1,5])
[1,2,3,5]
(toAscList c)
es la lista de los elementos del conjunto c
ordenados crecientemente. Por ejemplo,ghci> toAscList (fromList [3,2,5,2,1,5])
[1,2,3,5]
(toDescList c)
es la lista de los elementos del conjunto c
ordenados decrecientemente. Por ejemplo,ghci> toDescList (fromList [3,2,5,2,1,5])
[5,3,2,1]
(fromList xs)
es el conjunto cuyos elementos son los de la lista xs
. Por ejemplo,ghci> fromList [3,2,5,2,15]
fromList [2,3,5,15]
ghci> :t it
it :: Set Integer
(fromAscList xs)
es el conjunto cuyos elementos son los de la lista creciente xs
. Por ejemplo,ghci> size (fromAscList [1..1000000])
1000000
(0.48 secs, 141113268 bytes)
ghci> size (fromList [1..1000000])
1000000
(1.49 secs, 607884408 bytes)
(fromDistinctAscList xs)
es el conjunto cuyos elementos son los de la lista creciente xs
de elementos no repetidos. Por ejemplo,ghci> size (fromAscList [1..4000000])
4000000
(3.15 secs, 561334996 bytes)
ghci> size (fromDistinctAscList [1..4000000])
4000000
(2.98 secs, 432857796 bytes)
(c1 == c2)
se verifica si los conjuntos c1
y c2
son iguales. Por ejemplo,ghci> fromList [3,2,5] == fromList [5,2,3,2]
True
ghci> fromList [3,2,5] == fromList [5,1,3,2]
False
(split x c)
es el par cuya primera componente es el conjunto de elementos de c
menores que x
y la segunda, los mayores. Por ejemplo,ghci> split 5 (fromList [3,2,5,1,7])
(fromList [1,2,3],fromList [7])
ghci> split 9 (fromList [3,2,5,1,7])
(fromList [1,2,3,5,7],fromList [])
ghci> split 0 (fromList [3,2,5,1,7])
(fromList [],fromList [1,2,3,5,7])
(splitMember x c)
es la terna cuya primera componente es el conjunto de elementos de c
menores que x
, la segunda indica si x
pertenece a c
y la tercera, son elementos de c
mayores que x
. Por ejemplo,ghci> splitMember 5 (fromList [3,2,5,1,7])
(fromList [1,2,3],True,fromList [7])
ghci> splitMember 6 (fromList [3,2,5,1,7])
(fromList [1,2,3,5],False,fromList [7])
(findIndex x c)
es la posición de x
en c
, contando a partir de 0. Por ejemplo,ghci> findIndex 5 (fromList [3,7,5,3])
1
ghci> findIndex 4 (fromList [3,7,5,3])
*** Exception: Set.findIndex: element is not in the set
(lookupIndex x c)
es justo la posición de x
en c
, contando a partir de 0. Por ejemplo,ghci> lookupIndex 5 (fromList [3,7,5,3])
Just 1
ghci> lookupIndex 4 (fromList [3,7,5,3])
Nothing
(elemAt n c)
es el elemento de c
en la posición n
, contando a partir de 0. Por ejemplo,ghci> elemAt 1 (fromList [3,7,5,3])
5
ghci> elemAt 9 (fromList [3,7,5,3])
*** Exception: Set.elemAt: index out of range
(deleteAt n c)
es el conjunto obtenido eliminando el elemento de c
en la posición n
, contando a partir de 0. Por ejemplo,ghci> deleteAt 1 (fromList [3,7,5])
fromList [3,7]
ghci> deleteAt 4 (fromList [3,7,5])
fromList *** Exception: Set.deleteAt: index out of range
(showTree c)
es la cadena correspondient al árbol del conjunto c
. Por ejemplo,ghci> putStrLn (showTree (fromList [1..5]))
4
+--2
| +--1
| +--3
+--5
ghci> putStrLn (showTree (fromList [1..7]))
4
+--2
| +--1
| +--3
+--6
+--5
+--7
(showTreeWith x y c)
es la cadena correspondient al árbol del conjunto c
donde se puede elegir el aspecto según los valores de x
e y
. Por ejemplo,ghci> putStrLn (showTreeWith True False (fromList [1..5]))
4
+--2
| +--1
| +--3
+--5
ghci> putStrLn (showTreeWith True True (fromList [1..5]))
4
|
+--2
| |
| +--1
| |
| +--3
|
+--5
ghci> putStrLn (showTreeWith False True (fromList [1..5]))
+--5
|
4
|
| +--3
| |
+--2
|
+--1
ghci> putStrLn (showTreeWith False False (fromList [1..5]))
+--5
4
| +--3
+--2
+--1