Hur kunde en riktig vektortyp implementeras i Haskell? För att något ska kunna vara en vektor måste det lagras sekventiellt i minnet med O(1)
slumpmässig åtkomst. Men Haskell döljer sin minneshantering och dess datatyper beskriver träd! Så hur kan du uttrycka den typen av krav?
Kommentarer
Svar
Inte alla datatyper i Haskell är träd. Det finns också de inbyggda typerna som funktioner eller Int. Bland dem hittar du typen Array som ger dig O (1) tillgång till dess element.
Vissa kompilatorer, som GHC, ger också opackade matriser. De använder mindre minne och åtkomst per element är snabbare, men det förändrar naturligtvis inte komplexiteten.
Utöver dessa arrays kan man bygga datatyper som liknar std::vector
i C ++. Ett exempel är vektor bibliotek.
Svar
Du bör titta på Data.Vector.Unboxed
och Data.Vector.Mutable
i vektorpaketet:
std::vector
).