Comment un vrai type Vector pourrait-il être implémenté dans Haskell? Pour que quelque chose soit un vecteur, il doit être stocké séquentiellement en mémoire, avec un accès aléatoire O(1)
. Mais Haskell cache sa gestion de la mémoire, et ses types de données décrivent des arbres! Alors, comment pourriez-vous exprimer ce genre dexigence?
Commentaires
Réponse
Tous les types de données dans Haskell ne sont pas des arbres. Il existe également des types intégrés comme les fonctions ou Int. Parmi ceux-ci, vous trouverez le type Array qui vous donne un accès O (1) à ses éléments.
Certains compilateurs, comme GHC, fournissent également tableaux sans boîte. Ceux-ci utilisent moins de mémoire et laccès par élément est plus rapide, mais cela ne change pas la complexité bien sûr.
En plus de ces tableaux, on peut créer des types de données similaires à std::vector
en C ++. Un exemple est la bibliothèque vector .
Réponse
Vous devriez regarder Data.Vector.Unboxed
et Data.Vector.Mutable
dans le package vectoriel:
std::vector
).