Haskell Language
vectoren
Zoeken…
Opmerkingen
Het [Data.Vector] legt de nadruk op zeer hoge prestaties door lusfusie, met behoud van een rijke interface. De belangrijkste gegevenstypen zijn boxed en unboxed arrays, en arrays kunnen onveranderlijk (puur) of veranderlijk zijn. Arrays kunnen opslaande elementen bevatten, geschikt voor doorvoer van en naar C, en u kunt converteren tussen de arraytypen. Arrays worden geïndexeerd door niet-negatieve Int-waarden.
De Haskell Wiki heeft deze aanbevelingen :
In het algemeen:
- Eindgebruikers moeten in de meeste gevallen Data.Vector.Unboxed gebruiken
- Gebruik Data.Vector als u complexere structuren wilt opslaan
- Als u naar C wilt gaan, gebruikt u Data.Vector.Storable
Voor bibliotheekschrijvers;
- Gebruik de generieke interface om ervoor te zorgen dat uw bibliotheek maximaal flexibel is: Data.Vector.Generic
De Data.Vector-module
De Data.Vector- module die door de vector wordt geleverd, is een bibliotheek met hoge prestaties voor het werken met arrays.
Nadat u Data.Vector
hebt geïmporteerd, kunt u eenvoudig een Vector
gaan gebruiken:
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
U kunt zelfs een multidimensionale array hebben:
Prelude Data.Vector> let x = fromList [ fromList [1 .. x] | x <- [1..10] ] Prelude Data.Vector> :t x x :: Vector (Vector Integer)
Een vector filteren
Oneven elementen filteren:
Prelude Data.Vector> Data.Vector.filter odd y
fromList [1,3,5,7,9,11] :: Data.Vector.Vector
Een vector in kaart brengen ('kaart') en een vector verkleinen ('vouwen')
Vectoren kunnen map
'd en fold'd,
filter 'd and
zip''d zijn:
Prelude Data.Vector> Data.Vector.map (^2) y
fromList [0,1,4,9,16,25,36,49,64,81,100,121] :: Data.Vector.Vector
Verkleinen tot een enkele waarde:
Prelude Data.Vector> Data.Vector.foldl (+) 0 y
66
Werken aan meerdere vectoren
Zip twee arrays in een reeks paren:
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