3 ms·
You read the code. And unlike operator overloading, you know at a glance exactly which implementation to look at. There is no spooky action at a distance.
by throwaway894345 3y ago
You read the code. And unlike operator overloading, you know at a glance exactly which implementation to look at. There is no spooky action at a distance.
- joshuamorton 3y agoHow, the functions might support dynamic dispatch or be overloaded based on types. There's nothing that prevents me from implementing all of plus(Int, Int) plus(Int, Vec) plus(Int, Mat) plus(Vec, Vec) plus(Vec, Mat) plus(Mat, Mat) and to know which `plus` is being dispatched, you need to know the types of both arguments, exactly the same as if `plus` is named `__add__` in python or `operator+` in C++.
- throwaway894345 3y agoYes, overloading is bad (operator overloading is a kind of overloading).
- joshuamorton 3y agoHow do you do math without overloading? I have ints, floats, bignums, vectors, matrices, complex numbers, and potentially fractions. You want every operation to have a distinctly named version for each other numeric type? Maybe you can reduce some of those, but you can't really have interfaces without some overloading.
- pjmlp 3y agoExactly the same thing with functions that happen to use funny characters.
- throwaway894345 3y agoNah, there’s no spooky action at a distance when you don’t overload. You know concretely what code is running.
- pjmlp 3y agoHave you ever heard of linkers?
- throwaway894345 3y agoHave you ever heard of potatoes? Neither of them help you tell at a glance which code is being dispatched to.