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