Como um verdadeiro tipo de vetor pode ser implementado em Haskell? Para que algo seja um vetor, ele deve ser armazenado sequencialmente na memória, com O(1)
acesso aleatório. Mas Haskell esconde seu gerenciamento de memória e seus tipos de dados descrevem árvores! Então, como você poderia expressar esse tipo de requisito?
Comentários
Resposta
Nem todos os tipos de dados em Haskell são árvores. Existem também os tipos internos, como funções ou Int. Entre eles, você encontra o tipo Array que lhe dá acesso O (1) aos seus elementos.
Alguns compiladores, como GHC, também fornecem matrizes unboxed. Esses usam menos memória e o acesso por elemento é mais rápido, mas isso não altera a complexidade do curso.
Além desses arrays, pode-se construir tipos de dados semelhantes a std::vector
em C ++. Um exemplo é a biblioteca vetorial .
Resposta
Você deve olhar para Data.Vector.Unboxed
e Data.Vector.Mutable
no pacote de vetores:
std::vector
).