Data.Array
Este documento es un resumen del contenido de la librería Data.Array
. Una descripción detallada de todo el contenido de dicha librería se puede encontrar en https://hackage.haskell.org/package/array/docs/Data-Array.html
La librería Data.Array
contiene el tipo de dato Array
o tabla, que sirve para almacenar una cantidad prefijada de objetos del mismo tipo accesibles mediante un índice. Un índice es un par formado por el primer elemento y el último elemento que se utilizan para acceder a los elementos de la tabla.
array :: Ix i => (i, i) -> [(i, e)] -> Array i e
(array (i,j) ivs)
construye una tabla de valores accesibles mediante un índice comprendido entre i
y j
. Los valores de la tabla se proporcionan como una lista de pares ivs
formados por el valor en el rango del índice y el valor que se debe almacenar en la tabla. > array (1,5) [(i,i^2) | i <- [1..5]] array (1,5) [(1,1),(2,4),(3,9),(4,16),(5,25)] > array ((1,1),(2,2)) [((i,j),i+j) | i <- [1..2], j <- [1..2]] array ((1,1),(2,2)) [((1,1),2),((1,2),3),((2,1),3),((2,2),4)]
listArray :: Ix i => (i, i) -> [e] -> Array i e
(listArray (i,j) vs)
construye una tabla de valores accesibles mediante un índice comprendido entre i
y j
. Los valores de la tabla se proporcionan como una lista vs
en el orden en que están asociados a los valores del índice.
> listArray (1,5) [1,4,9,16,25] array (1,5) [(1,1),(2,4),(3,9),(4,16),(5,25)] > listArray ((1,1),(2,2)) [2,3,3,4] array ((1,1),(2,2)) [((1,1),2),((1,2),3),((2,1),3),((2,2),4)]
bounds :: Array i e -> (i,i)
(bounds a)
devuelve los límites del índice de la tabla a
, un par formado por el límite inferior y el límite superior > bounds (array (1,5) [(i,i^2) | i <- [1..5]]) (1,5)
bounds (listArray ((1,1),(2,2)) [2,3,3,4])
((1,1),(2,2))
indices :: Ix i => Array i e -> [i]
(indices a)
devuelve una lista con todos los valores del índice de la tabla a
, ordenados desde el límite inferior hasta el superior > indices (array (1,5) [(i,i^2) | i <- [1..5]]) [1,2,3,4,5] > indices (listArray ((1,1),(2,2)) [2,3,3,4]) [(1,1),(1,2),(2,1),(2,2)]
elems :: Array i e -> [e]
(elems a)
devuelve una lista con todos los valores de la tabla a
, ordenados según el valor de su índice.
> elems (array (1,5) [(i,i^2) | i <- [1..5]]) [1,4,9,16,25] > elems (listArray ((1,1),(2,2)) [2,3,3,4]) [2,3,3,4]
assocs :: Ix i => Array i e -> [(i,e)]
(assocs a)
devuelve una lista con todas las parejas formadas por índices de la tabla a
y el valor que almacena, ordenados según el valor del índice.
> assocs (array (1,5) [(i,i^2) | i <- [1..5]]) [(1,1),(2,4),(3,9),(4,16),(5,25)] > assocs (listArray ((1,1),(2,2)) [2,3,3,4]) [((1,1),2),((1,2),3),((2,1),3),((2,2),4)]
! :: Ix i => Array i e -> i -> e
(a ! i)
devuelve el valor de la tabla a
que se encuentra en el valor del índice i
.
> (array (1,5) [(i,i^2) | i <- [1..5]]) ! 2 4 > (listArray ((1,1),(2,2)) [2,3,3,4]) ! (1,2) 3