Ricerca…


Osservazioni

[Data.Vector] ha un'enfasi su prestazioni molto elevate attraverso la fusione loop, pur conservando un'interfaccia ricca. I principali tipi di dati sono array in box e unboxed e gli array possono essere immutabili (puri) o mutabili. Gli array possono contenere elementi memorizzabili, adatti per il passaggio da e verso C, e puoi convertire tra i tipi di array. Gli array sono indicizzati da valori Int non negativi.

Haskell Wiki ha queste raccomandazioni :

In generale:

  • Gli utenti finali dovrebbero utilizzare Data.Vector.Unboxed per la maggior parte dei casi
  • Se è necessario memorizzare strutture più complesse, utilizzare Data.Vector
  • Se è necessario passare a C, utilizzare Data.Vector.Storable

Per gli scrittori di biblioteche;

  • Utilizza l'interfaccia generica per garantire che la tua libreria sia flessibile al massimo: Data.Vector.Generic

Il modulo Data.Vector

Il modulo Data.Vector fornito dal vettore è una libreria ad alte prestazioni per lavorare con gli array.

Una volta importato Data.Vector , è facile iniziare a utilizzare un 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

Puoi persino avere un array multidimensionale:

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

Filtrare un vettore

Filtra elementi dispari:

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

Mappatura (`mappa`) e Riduzione (` piega`) di un vettore

Vettori possono essere map 'd e fold'd, il filtro '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

Riduci a un singolo valore:

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

Lavorando su più vettori

Comprimi due array in una serie di coppie:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow