Overloading relational operators separately; thoughts?

Mike Parker via Digitalmars-d digitalmars-d at puremagic.com
Wed Sep 28 22:15:45 PDT 2016


On Thursday, 29 September 2016 at 04:39:37 UTC, Minty Fresh wrote:

>
> This applies to operator overloads just like everything else. 
> They're just syntactic sugar for functions. Documenting their 
> behavior is just as necessary.

I disagree with this. Operators are different in that the symbols 
themselves already have meaning and are a core part of the 
language. When I see a function in code that was written by 
someone else, I have no idea what it really does, no matter how 
it was named, until I pull up the documentation or the source and 
actually read it. I expect that I'm going to have to do that. 
Using operators in ways they were not intended to be used is 
breaking my expectations.

When I'm scanning D code and see a '+', I'm going to think 
addition (and not concatenation or appending or anything else). 
It isn't going to occur to me that the types involved are doing 
something completely different and I ought to look in the 
documentation to see what that is. And I shouldn't have to worry 
about it. That sort of cognitive disruption is really annoying.

In D1, operators were overloaded *by name* and not by symbol. I 
loved that, because it made it quite clear that opAdd is an 
addition and doing something different with it would be akin to 
having a function named printFoo launching an audio player. And 
if printFoo *did* launch an audio player, I'm quite confident 
most programmers would consider the function horribly misnamed. 
The same applies to operators, as I see it.


More information about the Digitalmars-d mailing list