This is an instance of the classic double dispatch problem. There are no really good answers in single dispatch languages like Java. My own opinion is that there aren't a lot of good answers in multi-dispatch languages either.
For now, I think that access to the private data trumps other considerations. On Fri, May 20, 2011 at 9:53 PM, Jake Mannix <[email protected]> wrote: > Hmmm... standard OO practice would be "keep the logic specific to the > impl with the impl". Also: this could get really ugly, due to proper > encapsulation > we currently have, if not impossible: do to DenseDense things most fast, > you > would need access to the (rightfully) private double[]. > > I'm not sure what would be gained... > > -jake > > On Fri, May 20, 2011 at 9:31 PM, Lance Norskog <[email protected]> wrote: > > > Working through Vector/Matrix classes I found a lot of things that > > could be tightened. > > > > -Would it be worthwhile to change the Vector and Matrix structures so > > that things like "sparse against dense" and popped in a central place? > > For example, Vector would have a few methods, and there would be a new > > "VectorOps" class. The latter implements "sparse v.s. dense" using the > > classes of input vectors. > > > > For example, DenseVector currently has "if the other is DenseVector, > > here is the fast path" code bits. Under this redo, there is a > > DenseDense operator. Vector.multiply(vector, vector) is a static > > method that pulls the classes of the inputs, and finds the DenseDense > > version. > > > > Yes, it would be an invasive patch. > > > > Lance Norskog > > [email protected] > > >
