Sök…


Anmärkningar

Det [Data.Vector] har betoning på mycket hög prestanda genom slingfusion, samtidigt som det har ett rikt gränssnitt. Huvuddatatyperna är rutor med rutor och rutor som inte är i rutor, och matriser kan vara oföränderliga (rena) eller muterbara. Matriser kan innehålla lagringsbara element, lämpliga för vidarebefordring till och från C, och du kan konvertera mellan matrityperna. Matriser indexeras av icke-negativa Int-värden.

Haskell Wiki har följande rekommendationer :

I allmänhet:

  • Slutanvändare bör använda Data.Vector.Unboxed i de flesta fall
  • Använd Data.Vector om du behöver lagra mer komplexa strukturer
  • Om du behöver gå till C, använd Data.Vector.Storable

För biblioteksförfattare;

  • Använd det generiska gränssnittet för att se till att ditt bibliotek är maximalt flexibelt: Data.Vector.Generic

Data.Vector-modulen

Data.Vector- modulen som tillhandahålls av vektorn är ett högpresterande bibliotek för att arbeta med matriser.

När du har importerat Data.Vector är det lätt att börja använda en 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

Du kan till och med ha en flerdimensionell matris:

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

Filtrera en vektor

Filtrera udda element:

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

Kartlägga ('karta') och minska ('vik') en vektor

Vektorerna kan vara map 'd och fold'd, filter 'd and zip`'d:

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

Minska till ett enda värde:

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

Arbetar med flera vektorer

Dela två matriser i en grupp par:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow