Yes, it is very difficult. A sensible API for a standard array library is something that needs more research. FWIW, I don't know of any other language that has what I'd like to see in Haskell. C++ probably comes closest but they have it easy - they don't do fusion.

I assume you've looked at SAC? http://www.sac-home.org/

Their main research and development focus was/has been on arrays (fusion/layout/padding/tiling/slicing/data-parallelism/shape-invariance
(source algorithms parameterized over array dimensionality/shape)/
whole-array ops/list-like ops/lots of surface operations reducable to
a minimal set of core operations that need implementation/cache
behaviour/performance/performance/performance/..). When they started out, I tried to make the point that I would have liked to have their wonderful array ideas in our otherwise wonderful language, but they preferred to follow their own way towards world domination (*). Does that sound familiar?-)

Claus

(*) ok, they did have a good motive: they came out of a research
   group that had done non-sequential functional programming in
   the 1980s, with all the things we see today: great speedups,
   shame about the sequential baseline; creating parallel threads
   is easy, load balancing slightly harder, but pumping (creating
   thread hierarchies recursively, only to see them fold into a
   small result, for the process to begin again) is a waste, etc.;
so they decided to start from a fast sequential baseline instead of full functional language, and designed their language around
   arrays instead of trying to add arrays to an existing language.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to