Haskell Language
Vectores
Buscar..
Observaciones
[Data.Vector] hace hincapié en un rendimiento muy alto a través de la fusión de bucles, al tiempo que conserva una interfaz rica. Los principales tipos de datos son matrices en caja y sin caja, y las matrices pueden ser inmutables (puras) o mutables. Las matrices pueden contener elementos almacenables, adecuados para pasar a C y desde ella, y puede convertir entre los tipos de matriz. Las matrices están indexadas por valores de Int no negativos.
El Wiki de Haskell tiene estas recomendaciones :
En general:
- Los usuarios finales deben usar Data.Vector.Unboxed para la mayoría de los casos
- Si necesita almacenar estructuras más complejas, use Data.Vector
- Si necesita pasar a C, use Data.Vector.Storable
Para escritores de bibliotecas;
- Use la interfaz genérica para asegurarse de que su biblioteca sea lo más flexible posible: Data.Vector.Generic
El módulo Data.Vector
El módulo Data.Vector proporcionado por el vector es una biblioteca de alto rendimiento para trabajar con arreglos.
Una vez que haya importado Data.Vector
, es fácil comenzar a usar un Vector
:
Prelude> import Data.Vector Prelude Data.Vector> let a = fromList [2,3,4] Prelude Data.Vector> a fromList [2,3,4] :: Data.Vector.Vector Prelude Data.Vector> :t a a :: Vector Integer
Incluso puedes tener una matriz multidimensional:
Prelude Data.Vector> let x = fromList [ fromList [1 .. x] | x <- [1..10] ] Prelude Data.Vector> :t x x :: Vector (Vector Integer)
Filtrando un vector
Filtrar elementos impares:
Prelude Data.Vector> Data.Vector.filter odd y
fromList [1,3,5,7,9,11] :: Data.Vector.Vector
Mapeo (`map`) y reducción (` fold`) de un vector
Los vectores se pueden map
y fold'd,
filtrar 'd and
comprimir:
Prelude Data.Vector> Data.Vector.map (^2) y
fromList [0,1,4,9,16,25,36,49,64,81,100,121] :: Data.Vector.Vector
Reducir a un solo valor:
Prelude Data.Vector> Data.Vector.foldl (+) 0 y
66
Trabajando en múltiples vectores
Zip dos matrices en una matriz de pares:
Prelude Data.Vector> Data.Vector.zip y y
fromList [(0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11)] :: Data.Vector.Vector