
Vector also does something like what your are describing. I think the
phrase to google for is "array recycling".
On 11:56PM, Fri, Jul 31, 2015 William Yager
Has anyone done any research into fusing operations that involve thawing some data, mutating it, and then freezing it again?
Data.Vector does something similar; it turns vectors into streams, operates on the streams, and then turns them back into vectors. It can fuse these operations by removing intermediate However, I've done a bit of preliminary work on a fusion system that works on operations of the form
runST $ do x' <- thaw x foo x' freeze x'
and yields promising results in some cases. This could be useful for data structures that aren't stream-able, but suffer from lots of unnecessary freezing and unfreezing.
This seems like the sort of thing that someone would have already done, so I wanted to check if anyone knew of any previous work on this.
Cheers, Will _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe