On Sunday, 2 August 2015 at 21:17:10 UTC, Jonathan M Davis wrote:
types you're dealing with, and it allows user-defined code to
have both an addition operator and a concatenation operator on
the same type.
I assume you mean vectors, though I would prefer binary "++" for
that.
Where distinguishing between + and ~ would likely make a big
difference though is dynamic languages that aren't strict with
types and allow nonsense like "5" + 2. And in that case, I
expect that Walter is completely right. It's just error-prone
to use + for concatenation in cases like that, and providing a
separate concatenation operator would reduce bugs.
I've never run into such bugs, have you? The ambigious case
would be "result:" + 3 + 8 , but you can solve this by giving
numeric plus higher precedence or avoid implicit conversion.
Though, these days it is more common to support something like
"result: {{3+8}}".
Regardless, I definitely like the fact that we have ~ and ~=
instead of reusing + and += for that. It's a small improvement,
but it is an improvement.
It's a weird thing to do for a C-decendant as I would expect "~="
to do binary negation.