On Thu, Apr 10, 2008 at 10:46:17PM -0600, Zach wrote:
What do you lose? You can no longer use aref and array functions. That is actually a big loss, that's why I didn't do it,
One would hope that this isn't too big of a loss. Different data types have different interfaces right. Are you referring to the inability to use other peoples tools?
Yes.
You mean in conjunction with the affine parameters? You cannot encode the affine map in terms of :displaced-to and :displaced-index-offset, right?
I am not using the affine indexing code at the moment, I meant that displaced arrays are general enough for my needs.
But the above is easy to do, I have some code lying around if you are interested.
I am interested, could you post it?
I made it available at http://www.princeton.edu/~tpapp/software/foreign-friendly-array.archived.tar... Note that the code is not optimized, it was experimental. Quite a few design choices were refined in FFA, so just look at index-mapping.lisp to get the idea, the actual foreign interface code is not that good here. Generally, I found that thinking a bit about my matrix/array layout always allows me to implement what I want using CL's displaced arrays. When R was my primary language, I found a lot of indexing magic nice, but later realized that it is a pain in the rear end when you try to optimize your applications. Displaced arrays are a compromise, but I found that they are general enough for my needs. For example, with row-major matrices, you can select a submatrix that contains all columns of the original, or with columns dropped from the left, using displaced arrays. Tamas