Come può essere implementato un vero vettore in Haskell?

5

Come potrebbe essere implementato un vero tipo di vettore in Haskell? Affinché qualcosa sia un vettore, deve essere memorizzato sequenzialmente in memoria, con O(1) accesso casuale. Ma Haskell nasconde la sua gestione della memoria, e i suoi tipi di dati descrivono gli alberi! Quindi, come hai potuto esprimere questo tipo di requisito?

    
posta MaiaVictor 12.07.2014 - 00:34
fonte

2 risposte

5

Non tutti i tipi di dati in Haskell sono alberi. Ci sono anche i tipi built-in come funzioni o Int. Tra quelli trovi il tipo Array che ti dà O (1) accesso ai suoi elementi.

Alcuni compilatori, come GHC, forniscono anche array unboxed. Quelli usano meno memoria e accesso per elemento è più veloce, ma ciò non cambia la complessità, naturalmente.

Oltre a questi array è possibile creare tipi di dati simili a std::vector in C ++. Un esempio è la libreria .

    
risposta data 18.07.2014 - 12:26
fonte
1

Dovresti guardare Data.Vector.Unboxed e Data.Vector.Mutable nel pacchetto vettoriale:

link

    
risposta data 12.07.2014 - 01:05
fonte

Leggi altre domande sui tag