3 ms·
I'm really not a fan of small qol features like this. I think it really hurts readability for the general audience. The function itself is minimal overhead and
by campbel 3y ago
I'm really not a fan of small qol features like this. I think it really hurts readability for the general audience. The function itself is minimal overhead and is clearer to the reader.
- ogogmad 3y agoThe world seems like it's moving to ML. That needs matrices, complex numbers, autodiff, different fixed/floating point types. All four of these need operator overloading.
- yangl1996 3y agoYour last sentence seems fishy to me. Are you suggesting that support for C++ like operator overloading is a necessary condition for, say, autodiff? I thought Go is a Turing complete language.
- ogogmad 3y agoOperator overloading is about syntax and type safety. Brainfuck is Turing complete.
- campbel 3y agoI agree it is about syntax. But how is it about type safety?
- ogogmad 3y agoYou might want the same piece of code to work correctly under different numerical types. Answer: Op overloading + generics. E.g. Dual numbers for autodiff; 2x2 matrices of quaternions for texture mapping; matrices of differing floating point types for machine learning. Why should I implement the same matrix operations a million times over?
- campbel 3y agoCould you explain _why_ they need overloads and functions don't work? That does not immediately follow for me.
- ogogmad 3y agoAutodiff requires interpreting the same piece of code using "dual numbers" that would normally expect "real numbers". This needs operator overloading combined with generics.
- anonymoushn 3y agoThat's true, we should get rid of operators for primitives too.
- campbel 3y agoOperators for primitive types are fine, they are well defined by the language and consistent across programs. Operator overloading is going to change behavior between programs which puts extra cognitive load on the reader. That said, Go sticks to the most basic operator implementation (strings, numbers etc...). Go doesn't support `+` on slices for instance.
- coldtea 3y agoIn better languages they don't exist except as sugar, they're functions themselves.