Additional Binary Operators

Era Scarecrow rtcvb32 at yahoo.com
Fri Mar 1 14:56:26 PST 2013


On Friday, 1 March 2013 at 21:52:00 UTC, Paul D. Anderson wrote:
> Operator overloading in D is straightforward and sensible.
>
> I think there is an opportunity for D to do better with some 
> very small changes.
>
> I propose including additional Unicode mathematical symbols as 
> recognized operators for opBinary. All that would be required 
> is to extend the lexer to recognize the symbols as binary 
> operators.
>
> For example, in vector arithmetic there are two different 
> products defined -- the dot product and the cross product. Most 
> implementations I've seen overload '*' for the inner product, 
> but omit operator for the cross product. In UTF-8 the "middle 
> dot", ('•', \u00B7) and "multiplication sign", ('×', \u00D7), 
> correspond to the more usual mathematical notation for the dot 
> and cross products, respectively.
>
> UTF-16 has many more mathematical symbols, particularly on the 
> 2200-22FF and 2A00-2AFF code pages. \u2207 is a wedge, commonly 
> used for outer products. The circled plus (u\2A01) and circled 
> times sign (\2A02) are defined for some mathematical 
> operations. \u2A33 is the "smash product" symbol, which I've 
> never heard of before but it sounds cool.

> Pros:
> 1. Extends the capability to define mathematical operators for 
> user-defined types
> 2. Shouldn't break any existing code since the symbols aren't 
> valid chars in identifiers (as far as I can tell) and aren't 
> being used elsewhere.
> 3. Takes advantage of the existing opBinary overloading so 
> implementation should be straightforward.
>
> Cons:
> 1. They are hard to type or otherwise enter in to a text file.
> 2. They may not display correctly in some output forms.
> 3. They could be confusing to someone unfamiliar with the 
> concept.

  In windows (x86, could include dos & linux?) you can hold down 
the alt key and manually type in the value of the character; But 
it seems to truncated to 8 bits so Alt+321 = 65 which is A, so 
likely unless you're copy/pasting the symbols it probably won't 
work.

>
> With regard to the difficulty of entering or displaying these 
> characters, I think that is largely because modern computer 
> languages only give lip service to Unicode -- code is almost 
> exclusively written in ASCII. I have seen one instance where a 
> certain mathematical constant was named '?', but the author was 
> an iconoclast and pariah.

  Those operators seem more useful for scientific math. I wouldn't 
want them added to to the core language though.

  ASCII can be typed with (almost) any keyboard and use any editor 
(new or old); You can still read source code if outputted to a 
dumb terminal rather than getting odd symbols (whitespace as 
well) and may be tearing your hair out wondering what this UTF-8 
symbol is or what it means.


More information about the Digitalmars-d mailing list