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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow