Cum ar putea fi implementat un tip Vector adevărat în Haskell? Pentru ca ceva să fie un Vector, trebuie să fie stocat secvențial în memorie, cu O(1)
acces aleatoriu. Dar Haskell își ascunde gestionarea memoriei, iar tipurile sale de date descriu copacii! Deci, cum ați putea exprima acest tip de cerință?
Comentarii
Răspuns
Nu toate tipurile de date din Haskell sunt copaci. Există, de asemenea, tipuri integrate, cum ar fi funcțiile sau Int. Printre acestea găsiți tipul Array care vă oferă acces O (1) la elementele sale.
Unele compilatoare, precum GHC, oferă, de asemenea, matricele necăsuțate. Cei folosesc mai puțină memorie și accesul pe element este mai rapid, dar asta nu schimbă complexitatea, desigur.
Pe lângă aceste matrice se pot construi tipuri de date similare cu std::vector
în C ++. Un exemplu este biblioteca vector .
Răspuns
Ar trebui să vă uitați la Data.Vector.Unboxed
și Data.Vector.Mutable
în pachetul vector:
std::vector
).