opPow, opDollar

KennyTM~ kennytm at gmail.com
Sat Nov 7 07:48:11 PST 2009


On Nov 7, 09 18:43, Don wrote:
> Walter Bright wrote:
>> Don wrote:
>>> A little while ago I said I'd create a patch for ^^ as an
>>> exponentiation. A couple of people had requested that I make a post
>>> to the ng so they'd know when it happens. Here it is.
>>>
>>> This is opPow(), x ^^ y
>>>
>>> http://d.puremagic.com/issues/show_bug.cgi?id=3481
>>
>> I don't understand the rationale for an exponentiation operator. It
>> isn't optimization, because pow() could become an intrinsic that the
>> compiler knows about. pow() is well known, ^^ isn't. (Fortran uses **)
>
> It's primarily about syntax sugar: pow() is so ugly. In practice, the
> most important case is squaring, which is an extremely common operation.
> pow(xxx,2) is horribly ugly for something so fundamental. It's so ugly
> that noone uses it: you always change it to xxx * xxx. But then, xxx
> gets evaluated twice.
>

Nice. Meanwhile, I'd like an opSum() operator (∑ range) as well. It's 
primarily about syntax sugar: reduce!("a+b")(range) is so ugly. In 
practice, the most important case is the sum from 1 to n, which is an 
extremely common operation. reduce!("a+b")(iota(1,n+1)) is horribly ugly 
for something so fundamental. It's so ugly that noone uses it: you 
always change it to n*(n+1)/2. But then, n gets evaluated twice.

> Yes, ^^ hasn't been used for exponentiation before. Fortran used **
> because it had such a limited character set, but it's not really a
> natural choice; the more mathematically-oriented languages use ^.
> Obviously C-family languages don't have that possibility.
>




More information about the Digitalmars-d mailing list