Adding Unicode operators to D [use cases]

Don nospam at nospam.com.au
Tue Oct 28 06:53:05 PDT 2008


Andrei Alexandrescu wrote:
> Correx:
> 
> http://www.reddit.com/r/programming/comments/78rmc/allowing_unicode_operators_in_d_similarly_to/ 
> 
> 
> Andrei
> 
> Andrei Alexandrescu wrote:
>> Please vote up before the haters take it down, and discuss:
>>
>> http://www.reddit.com/r/programming/comments/78rjk/allowing_unicode_operators_in_d_similarly_to/ 
>>
>>
>>
>> Andrei

Entering this debate late:

I think that operator overloading itself is syntactic sugar, and 
primarily exists for numerical programmers. So it's not so unreasonable 
to support for operator overloading which is not hugely intelligible to 
non-mathematicians.
"Funny" operators should never be seen by anyone without a mathematical 
background. However, I'm not so sure how common they'd actually be.

The strongest use case seems to me to be the situation where multiple 
related operations exist, but only one operator is available.
The classic example is vector products, where we have:
- vector dot vector
- vector cross vector
- Elementwise product of two vectors.
But we only have one opMul. So it would be useful to have alternate 
multiplication signs available.
Adding × (opCross) as a multiplication which is non-associative would, I 
think, be quite generally useful.

But, I think there aren't actually very many other operators which are 
easy to justify on mathematical grounds. Largely because most unary 
operations look quite OK when implemented as functions, and 
mathematicians don't have a huge number of binary operators.
Other than dot product, cross product, and convolution, there's the 
exclusive or symbol (+ with a circle around it), and everything else is 
pretty obscure.

Apart from the dot and cross product, the inability to have superscripts 
and subscripts in variable names (and comments!) is a much bigger issue, 
in my experience.
Oh. And the lack of an exponentiation operator. I miss the old Commodore 
64 up-arrow for power <g>

If you could completely ignore keyboard and display issues, and use any 
unicode character as an operator, which ones would you actually use?


More information about the Digitalmars-d-announce mailing list