I threw together a first draft of the concept I'm looking for: https://github.com/tbreloff/Blox.jl. I only implemented the 1D case so far as I'm just playing around to figure out what I want the interface to look like. This is very similar to ChainedVectors in the 1D case I think.
I plan on adding "views" to this as well, which will probably just check to see if the indices are contained within a sub-array to return an ArrayViews::view, otherwise a light wrapper around a "BlockView" Comments welcome! Matt: I still need to review your gist a little more closely... thanks for that! On Monday, July 6, 2015 at 1:36:00 PM UTC-4, Scott Jones wrote: > > That also sounds a lot like RopeStrings, although like the ChainedVectors, > it doesn't do multi-dimensional arrays, just vectors (strings). > > On Friday, July 3, 2015 at 4:06:31 PM UTC-4, Tom Breloff wrote: >> >> I'm interested in being able to do zero-copy concatenation of >> AbstractArrays, with something similar to ArrayViews, but in reverse: >> >> x = rand(4,2) >> y = rand(4,2) >> z = hcatview(x,y) # "view" that is able to index into hcat(x,y) without >> creating the temporary matrix >> x[1,1] = 10.0 >> @assert z[1,1] == x[1,1] >> >> Does this exist already somewhere? If I was to build it, should I submit >> a PR to somewhere (ArrayViews?) or start a new package? >> >> One of many uses is to generate a large block matrix, potentially >> composed of both dense and sparse matrices. Bonus points if I can get a >> ContiguousView when "view(z, 1:3, 4:5)" refers to a range that is totally >> encapsulated by a dense child matrix. >> >
