Szukaj…


Uwagi

To [Data.Vector] kładzie nacisk na bardzo wysoką wydajność dzięki połączeniu pętli, przy zachowaniu bogatego interfejsu. Główne typy danych to tablice pudełkowe i nieopakowane, a tablice mogą być niezmienne (czyste) lub zmienne. Tablice mogą zawierać elementy Storable, odpowiednie do przekazywania do i z C, i można konwertować między typami tablic. Tablice są indeksowane według nieujemnych wartości Int.

Wiki Haskell ma następujące zalecenia :

Ogólnie:

  • Użytkownicy końcowi powinni w większości przypadków korzystać z Data.Vector.Unboxed
  • Jeśli chcesz przechowywać bardziej złożone struktury, użyj Data.Vector
  • Jeśli musisz przejść do C, użyj Data.Vector.Storable

Dla pisarzy bibliotecznych;

  • Użyj ogólnego interfejsu, aby zapewnić maksymalną elastyczność biblioteki: Data.Vector.Generic

Moduł Data.Vector

Moduł Data.Vector dostarczony przez wektor jest biblioteką o wysokiej wydajności do pracy z tablicami.

Po zaimportowaniu Data.Vector można łatwo rozpocząć korzystanie z 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

Możesz nawet mieć tablicę wielowymiarową:

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

Filtrowanie wektora

Filtruj nieparzyste elementy:

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

Mapowanie (`mapa`) i zmniejszanie (` fold`) wektora

Wektory mogą być map „d” i „ fold'd, filtrowane 'd and zip”:

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

Zmniejsz do jednej wartości:

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

Praca na wielu wektorach

Zapakuj dwie tablice w szereg 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow