On Thursday, 13 October 2022 at 20:28:52 UTC, solidstate1991 wrote:
> So I watched this video:
https://youtu.be/G6b62HmsO6M
And Walter talked about using operator overloading for nonstandard purposes.
So in my collections library, I used it to implement set operators, but since set operators don't exist in the D standard (and require unicode, which would upset a lot of people, especially those who don't know what Win + '.' does), I had to use operators that have similar function in other spaces.
I personally haven't used them yet in my projects (except for the unittests), so it's not too late to remove them, but I don't know if anyone else might be using them or not.
Link to my library with an example offense: https://github.com/ZILtoid1991/collections-d/blob/master/source/collections/treemap.d#L356
On Thursday, 13 October 2022 at 20:28:52 UTC, solidstate1991 wrote:
> So I watched this video:
https://youtu.be/G6b62HmsO6M
And Walter talked about using operator overloading for nonstandard purposes.
So in my collections library, I used it to implement set operators, but since set operators don't exist in the D standard (and require unicode, which would upset a lot of people, especially those who don't know what Win + '.' does), I had to use operators that have similar function in other spaces.
I personally haven't used them yet in my projects (except for the unittests), so it's not too late to remove them, but I don't know if anyone else might be using them or not.
Link to my library with an example offense: https://github.com/ZILtoid1991/collections-d/blob/master/source/collections/treemap.d#L356
AFAIC, operators are infix functions with funny names. I think Haskell got it this exactly right syntax-wise, but definitely not culture-wise given their abuse of operators. If you have to tell people that you "pronounce" >>=
as "shove", well...
As Bjarne said once in response to complaints that operator overloading lets people write code that doesn't do what you expect:
// notice how the code and the docs lie
/**
* Adds two numbers
*/
int sum(int i, int j) {
return i - j; // oops
}