Adding Unicode operators to D

Steven Schveighoffer schveiguy at yahoo.com
Thu Oct 23 06:55:19 PDT 2008


"davidl" wrote
>? Thu, 23 Oct 2008 09:36:29 +0800,Steven Schveighoffer 
><schveiguy at yahoo.com> ??:
>
>> "Andrei Alexandrescu"  wrote
>>> Correx:
>>>
>>> http://www.reddit.com/r/programming/comments/78rmc/allowing_unicode_operators_in_d_similarly_to/
>>>
>>> Andrei
>>>
>>
>> No thanks.  Please let's only use operators that are on the keys of my
>> keyboard. I don't fancy having to type key digraphs or trigraphs to try 
>> and
>> write code.
>>
>> I understand that others already have this problem, but I don't.  This 
>> would
>> be a huge detractor from D for me.  I'd definitely support a language 
>> fork
>> at that point, or at least refuse to deal with any code that has unicode
>> operators.  I think you'd find others feel the same way.
>>
>> Why can't the emacs module solution work that was used for the cheverons?
>> That is, when emacs sees:
>>
>> x opCross(y);
>>
>> display it as
>>
>> x x y
>>
>> (of course, assume the middle x is the cross symbol, I have no idea how 
>> to
>> type it).
>>
>> And upon save, regenerate the correct code.
>>
>> I see no issue with something like that.  This is all the compiler is 
>> doing
>> anyways...
>>
>
> Everything you worry about is just poor editor. Why do you think an editor 
> can affect the language?

All that is being proposed right now is syntax sugar.  Cross product, dot 
product, union, etc.  All of these will map to a function, so there is no 
reason to require compiler support  (that is, they don't translate directly 
to assembly/machine code).  I'm proposing the editor be used to do the sugar 
instead of the compiler.

Right now Unicode is not universally accepted by all editors, ASCII is. 
Right now, I don't have cross product symbol on my keyboard, all currently 
supported symbols I do have.  Why should my experience with D be severely 
affected by your desire for syntax sugar?

> And It complexes the language, if it's not priorly converted by the 
> programmer. Also it possibly sets up
> future restrictions of extending the language in the correct direction!

Today, I can call opX functions instead of using the appropriate operator. 
This is no different.

> In your case: x opCross(y) , why identifier opCross(identifier) is 
> considered as identifier x identifier?
> So would the typical operator overload function declaration should be 
> considered that way?
>
> x opCross(y)
> {
> }
>
> x x y
> {
> }
>
> or even
>
> x opCross(y, m){}
>
> --->
>
> x x y, m  {}
>
> also consider a template declaration
>
> Matrix opCross(T)(T a)
> {
> }
>
> should it be considered as Matrix x T (T a)?
>
> If not , how do you distinguish in all those circumstances(and not all 
> possible "shouldn't be" situations are listed here)


The editor module would have to be (and can be) smarter than that.

-Steve 




More information about the Digitalmars-d-announce mailing list