On Friday, 20 December 2024 at 18:40:17 UTC, Ali Çehreli wrote:
On 12/19/24 10:49 AM, sfp wrote:
> Subject lines says it all
Although you clearly have a need for, virtual operators haven't
been common in my experience. I always felt they could cause
semantic issues.
...
But it uses his magical implementation (enabled by D) of open
methods (and multi-methods).
Ali
Right, the semantics can be a little odd, but there are
definitely use cases for it which are very natural. Modeling how
different kinds of animals mingle, I'm not sure... :-)
"Virtual binary operators" are quite useful in computational
science (my field...). For instance, with a numerical linear
algebra library, you might have sparse matrices, dense matrices,
diagonal matrices, Toeplitz matrices, matrices which are only
accessible indirectly via their action (e.g. you multiply with a
discrete Fourier transform matrix by applying the FFT and do not
store the matrix itself), *block* matrices (comprised of other
matrices), etc, etc.
It is pretty common to mix and match these heterogeneously.
MATLAB and Python have dense and sparse matrices, potentially
other user-defined matrices/operators, and mixing and matching
them is straightforward. Duck-typing is especially nice here,
because there is no need to return a super type... multiply a
dense matrix with a diagonal matrix and return a dense matrix
(rather than a matrix supertype), no problem...
I actually saw this multimethod implementation in another forum
post when searching around, but not the talk. Thanks for posting
it. I will definitely take a look, but unless I'm mistaken, D
doesn't have free binary operators?