¿Qué necesito? [Una lista desordenada]¿Qué implementación de matriz haskell usar? ¿Cuáles son los pros y contras de cada
- MUY fácil paralelización
- apoyo para el mapa, filtra etc.
- capacidad de realizar cálculos basados matriz eficientemente, como A = B + C, tipo de como MATLAB matrices.
- Generación del código SIMD. Supongo que esto está fuera de discusión en el futuro cercano para cualquier cosa, pero bueno, puedo preguntar :)
- El soporte para matrices debería estar ahí como mínimo, las dimensiones más altas son de menor prioridad en este momento.
- capacidad para obtener un puntero y crear uno desde un puntero C.
- Asistencia de otras bibliotecas. IE, enlaces a populares paquetes matemáticos C, i/o en disco o imágenes si las matrices son 2D
¿Qué es lo que veo?
- Paquete de matriz en haskell-platform. Es el bendito y puede hacerlo en paralelo
- Data.Vector. Tiene fusión de bucle, pero no en plataforma, por lo que su madurez es desconocida para mí.
- paquete de reparación, contribuido por el equipo de DPH, pero no funciona bien con cualquier ghc estable hoy.
- Mucha variación en el nivel de soporte para implementaciones de matriz. Por ejemplo, there doesn't seem es una manera fácil de volcar un vector 2D en un archivo de imagen. IOW, la comunidad haskell aparentemente no se ha conformado con una implementación de matriz.
Así que por favor, ayúdame a elegir.
EDITAR A = B + C se refiere a un elemento sabia Además, y no muestra la concatenación
[cons] (http://en.wikipedia.org/wiki/Cons) – nmichaels
Espere, ¿no son sus requisitos pedir una lista * ordenado *? No veo cómo 'A = B + C' podría tener sentido en una lista desordenada a menos que' + 'sea' union'. –
@Dan Creo que lo entendieron mal. La solicitud de 'A = B + C' eficiente se refería a la suma numérica, no a la concatenación. Entonces en Data.Vector eso sería 'zipWith (+)'. –