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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow