[Haskell-cafe] fast Array operations: foldl, drop

Don Stewart dons at galois.com
Fri Nov 30 22:56:59 EST 2007


lemming:
> 
> On Fri, 30 Nov 2007, Ketil Malde wrote:
> 
> > Bryan O'Sullivan <bos at serpentine.com> writes:
> >
> > > For higher dimensions, there are enough options in terms of
> > > traversal direction and what exactly e.g. a fold should fold over
> > > (single elements? lower-dimensional slices?) that a sensible API
> > > doesn't exactly leap out.
> >
> > How about a 'reduce' instead of 'foldl1'?  I think that if you require
> > a commutative operator, the order doesn't matter (except for
> > efficiency and possible rounding issues, I guess).
> 
> For what I have in mind the order of execution matters.
> 
> I also think now that slices for higher dimensional arrays are useful,
> anyway. If you choose a subrange of indices in the most significant
> dimension this would be possible without copying. It would be also
> possible to 'reshape' (in MatLab terms) an array without copying, as long
> as the number elements remain the same. So you could first transform an
> array of arbitrary dimension to a two-dimensional one, say

I forgot to mention this early, but possibly you could use the ndp array 
library. There are some people using its UArr type for (non parallel)
strict arrays, that support map/fold/zip et al.

    http://darcs.haskell.org/packages/ndp/

This blog post recently,

    http://sequence.complete.org/node/371

shows at least one non-developer is using it :)

Roman, what do you think -- are the unlifted, non-parallel arrays usably `beta'?

-- Don


More information about the Haskell-Cafe mailing list