¿Cómo podría implementarse un verdadero tipo de Vector en Haskell? Para que algo sea un Vector, debe almacenarse secuencialmente en la memoria, con O(1)
acceso aleatorio. ¡Pero Haskell oculta su gestión de memoria y sus tipos de datos describen árboles! Entonces, ¿cómo podría expresar ese tipo de requisito?
Comentarios
Respuesta
No todos los tipos de datos en Haskell son árboles. También existen los tipos incorporados como funciones o Int. Entre ellos se encuentra el tipo Array que le da acceso O (1) a sus elementos.
Algunos compiladores, como GHC, también proporcionan matrices sin caja. Aquellos usan menos memoria y el acceso por elemento es más rápido, pero eso no cambia la complejidad, por supuesto.
Encima de esos arreglos uno puede construir tipos de datos similares a std::vector
en C ++. Un ejemplo es la biblioteca vector .
Respuesta
Deberías mirar Data.Vector.Unboxed
y Data.Vector.Mutable
en el paquete de vectores:
std::vector
).