Como um vetor verdadeiro pode ser implementado em Haskell?

5

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) de 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 exigência?

    
por MaiaVictor 12.07.2014 / 00:34
fonte

2 respostas

5

Nem todos os tipos de dados em Haskell são árvores. Há também os tipos internos como funções ou Int. Entre aqueles que você encontra o tipo Array que lhe dá O (1) acesso aos seus elementos.

Alguns compiladores, como o GHC, também fornecem matrizes sem caixa. Aqueles usam menos memória e o acesso por elemento é mais rápido, mas isso não muda a complexidade do curso.

No topo dessas matrizes pode-se construir tipos de dados semelhantes a std::vector em C ++. Um exemplo é a biblioteca vector .

    
por 18.07.2014 / 12:26
fonte
1

Você deve analisar Data.Vector.Unboxed e Data.Vector.Mutable no pacote de vetores:

link

    
por 12.07.2014 / 01:05
fonte