Haskell Language
Vektoren
Suche…
Bemerkungen
Es [Data.Vector] legt Wert auf eine sehr hohe Leistung durch Schleifenfusion, während eine reichhaltige Schnittstelle erhalten bleibt. Die Hauptdatentypen sind geschachtelte und nicht umrahmte Arrays, und Arrays können unveränderlich (rein) oder veränderlich sein. Arrays können speicherfähige Elemente enthalten, die für die Weitergabe an und von C geeignet sind, und Sie können zwischen den Array-Typen konvertieren. Arrays werden durch nicht negative Int-Werte indiziert.
Das Haskell-Wiki hat folgende Empfehlungen :
Im Algemeinen:
- Endbenutzer sollten in den meisten Fällen Data.Vector.Unboxed verwenden
- Wenn Sie komplexere Strukturen speichern möchten, verwenden Sie Data.Vector
- Wenn Sie an C übergeben werden müssen, verwenden Sie Data.Vector.Storable
Für Bibliotheksschreiber;
- Verwenden Sie die generische Schnittstelle, um sicherzustellen, dass Ihre Bibliothek maximal flexibel ist: Data.Vector.Generic
Das Data.Vector-Modul
Das Data.Vector Modul durch den vorgesehenen Vektor ist eine Hochleistungs - Bibliothek für die mit Arrays arbeiten.
Nachdem Sie Data.Vector
importiert Data.Vector
, können Sie leicht mit einem 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
Sie können sogar ein mehrdimensionales Array haben:
Prelude Data.Vector> let x = fromList [ fromList [1 .. x] | x <- [1..10] ] Prelude Data.Vector> :t x x :: Vector (Vector Integer)
Einen Vektor filtern
Filter ungerade Elemente:
Prelude Data.Vector> Data.Vector.filter odd y
fromList [1,3,5,7,9,11] :: Data.Vector.Vector
Mapping ("map") und Reduzieren ("fold") eines Vektors
Vektoren können map
'd and fold'd,
filtern '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
Reduzieren Sie auf einen einzigen Wert:
Prelude Data.Vector> Data.Vector.foldl (+) 0 y
66
Arbeiten an mehreren Vektoren
Zippen Sie zwei Arrays in ein Array von Paaren
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