Kuinka todellinen vektorityyppi voitaisiin toteuttaa Haskellissa? Jotta jokin olisi vektori, se on tallennettava peräkkäin muistiin O(1)
-käyttöoikeudella. Mutta Haskell piilottaa muistinhallinnan, ja sen tietotyypit kuvaavat puita! Joten miten voisit ilmaista tällaisen vaatimuksen?
Kommentit
Vastaus
Kaikki Haskellin tietotyypit eivät ole puita. On myös sisäänrakennettuja tyyppejä, kuten toiminnot tai Int. Niistä löydät tyypin Array , joka antaa sinulle O (1) pääsyn sen elementteihin.
Jotkut kääntäjät, kuten GHC, tarjoavat myös pakkaamattomat taulukot. Ne käyttävät vähemmän muistia ja per elementti on nopeampi, mutta se ei muuta tietysti monimutkaisuutta.
Näiden taulukoiden päälle voidaan rakentaa tietotyyppejä, jotka ovat samanlaisia kuin std::vector
C ++: ssa. Esimerkiksi -vektorikirjasto .
Vastaa
Tarkastele vektoripaketissa olevia Data.Vector.Unboxed
ja Data.Vector.Mutable
:
std::vector
).