Recherche…


Remarques

Il [Data.Vector] met l'accent sur les très hautes performances grâce à la fusion en boucle, tout en conservant une interface riche. Les principaux types de données sont les tableaux encadrés et non encadrés, et les tableaux peuvent être immuables (purs) ou mutables. Les tableaux peuvent contenir des éléments stockables, adaptés au passage vers et depuis C, et vous pouvez convertir entre les types de tableau. Les tableaux sont indexés par des valeurs Int non négatives.

Le Wiki Haskell a ces recommandations :

En général:

  • Les utilisateurs finaux doivent utiliser Data.Vector.Unboxed pour la plupart des cas
  • Si vous avez besoin de stocker des structures plus complexes, utilisez Data.Vector
  • Si vous devez passer à C, utilisez Data.Vector.Strable

Pour les écrivains de bibliothèque;

  • Utilisez l'interface générique pour vous assurer que votre bibliothèque est extrêmement flexible: Data.Vector.Generic

Le module Data.Vector

Le module Data.Vector fourni par le vecteur est une bibliothèque hautes performances pour travailler avec des tableaux.

Une fois que vous avez importé Data.Vector , il est facile de commencer à utiliser 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

Vous pouvez même avoir un tableau multidimensionnel:

Prelude Data.Vector> let x = fromList [ fromList [1 .. x] | x <- [1..10] ]
 
Prelude Data.Vector> :t x
x :: Vector (Vector Integer)

Filtrage d'un vecteur

Filtrer les éléments impairs:

Prelude Data.Vector> Data.Vector.filter odd y
fromList [1,3,5,7,9,11] :: Data.Vector.Vector

Mapping (`map`) et Réduire (` fold`) un vecteur

Les vecteurs peuvent être map et fold'd, filtrés 'd and compressés:

Prelude Data.Vector> Data.Vector.map (^2) y
fromList [0,1,4,9,16,25,36,49,64,81,100,121] :: Data.Vector.Vector

Réduire à une seule valeur:

Prelude Data.Vector> Data.Vector.foldl (+) 0 y
66

Travailler sur plusieurs vecteurs

Zip deux tableaux dans un tableau de paires:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow