Operator overloading -- lets collect some use cases

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Dec 28 13:11:07 PST 2008


aarti_pl wrote:
> Don pisze:
>> There's been some interesting discussion about operator overloading 
>> over the past six months, but to take the next step, I think we need 
>> to ground it in reality. What are the use cases?
>>
>> I think that D's existing opCmp() takes care of the plethora of 
>> trivial cases where <, >= etc are overloaded. It's the cases where the 
>> arithmetic and logical operations are overloaded that are particularly 
>> interesting to me.
>>
>> The following mathematical cases immediately spring to mind:
>> * complex numbers
>> * quaternions (interesting since * is anti-commutative, a*b = -b*a)
>> * vectors
>> * matrices
>> * tensors
>> * bigint operations (including bigint, bigfloat,...)
>> I think that all of those are easily defensible.
>>
>> But I know of very few reasonable non-mathematical uses.
>> In C++, I've seen them used for iostreams, regexps, and some stuff 
>> that is quite frankly bizarre.
>>
>> So, please post any use cases which you consider convincing.
>>
> 
> DSL support in mother language. As an example I can give SQL in D or 
> mockup tests description language (usually also in D - not as a separate 
> script language).
> 
> In my previous posts I already put few arguments why it is sometimes 
> much more handy to use "DSL in mother language" approach rather than 
> string mixins with DSL language itself.

I saw that, but few, if any, of the arguments you made apply to 
operators vs. named methods. You argued on string mixins vs. using named 
symbols. In fact one argument of yours works against you as there's no 
completion for operators.

Andrei



More information about the Digitalmars-d mailing list