[Haskell-cafe] ANNOUNCE: vector 0.1 (efficient arrays with lots
of fusion)
Roman Leshchinskiy
rl at cse.unsw.edu.au
Sat Jul 12 13:17:22 EDT 2008
Sebastian Sylvan wrote:
>
> Is there any more (easily-digested, like a paper) information available
> about this? Specifically what things can happen in-place, and future
> extensions...
Apart from the stream fusion papers, unfortunately no, it's all very
much work in progress. Basically, at the moment it will avoid allocating
some unnecessary arrays even if no loop fusion happens. So for instance,
in something like
map f (xs // us)
the two loops can't be fused ((//) is the same update operation as in
Data.Array). Usually, you'd allocate one array for (xs // us) and then
another one for the map. This library will do the map in-place if f
doesn't change the type of the elements. This is pretty important at
least for data-parallel code. I'll have to see how far this scales.
In the future, the fusion system will also be able to handle multiple
directions of traversals and permutations (it can only do left-to-right
traversals at the moment). The "Rewriting Haskell Strings" paper talks a
bit about that but DPH has much more complex requirements so I'll have
to use a different approach which I haven't implemented so far.
Roman
More information about the Haskell-Cafe
mailing list