> I find multiple dispatch to be a great match for writing mathematical algorithms, especially because of the ad-hoc specialization that it allows based on all parameter types. OO approaches always seemed weird
This _is_ an OO approach, just not the common Java-type OO approach. Common Lisp's Object System (CLOS) has had multiple dispatch for decades.