Haskell Language
Vecteurs
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