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