
Jon Harrop wrote:
If you have a function that mutates the elements of an array in-place and leverages parallelism by recursively subdividing the problem and mutating parts of the array separately, can this be expressed in Haskell?
In-place quicksort and many of the numerical methods from linear algebra fall into this category.
Most relevant work I know of is DPH: http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell http://www.cse.unsw.edu.au/~chak/project/dph/ but this isn't exactly about in-place algorithms. Although in theory it may be possible to optimized as in-place when compiling it down in certain situations, I don't think it would enforce that in general. However, when working with monadic code and mutable arrays one can always fork Haskell threads with forkIO or using other similar libraries. This can of course do in-place quicksort kind of things in parallel, but I don't think what you've expected is this. Is there a nice work going on in OCaml or F#?