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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow