What do I need? [an unordered list]
- VERY easy parallelization
- support for map, filter etc.
- ability to perform array based computations efficiently, like A=B+C, sort of like matlab arrays.
- Generation of SIMD code. I guess this is out of the question in the near future for anything, but hey, I can ask :)
- support for matrices should be there at a minimum, higher dimensions are lower priority right now.
- ability to get a pointer to it and create one from a C pointer.
- Support from other libraries. IE, bindings to popular C math packages, i/o to disk or images if the arrays are 2D
What do I see?
- Array package in haskell-platform. It's the blessed one and can do parallel
- Data.Vector. Has loop fusion, but not in platform, so its maturity is unknown to me.
- repa package, contributed by the DPH team, but doesn't work well with any stable ghc today.
- Lots of variation in the level of support for array implementations. For instance, there doesn't seem to be an easy way to dump a 2D vector to a image file. IOW, the haskell community apparently hasn't settled on an array implementation.
So please, help me choose.
EDIT A=B+C refers to element wise addition, and not list concatenation