Pow Expressions - not worth the juice?

Lance Bachmeier no at spam.net
Tue Feb 3 17:44:31 UTC 2026


On Tuesday, 3 February 2026 at 15:11:17 UTC, jmh530 wrote:
> On Tuesday, 3 February 2026 at 01:38:03 UTC, Lance Bachmeier 
> wrote:
>> On Monday, 2 February 2026 at 20:23:01 UTC, Sam Potter wrote:
>>> On Monday, 2 February 2026 at 17:43:45 UTC, Walter Bright 
>>> wrote:
>>>> https://dlang.org/spec/expression.html#pow_expressions
>>>>
>>>> They're a bit of an oddball feature in D, in that it's the 
>>>> only feature that relies on Phobos for its implementation.
>>>>
>>>> Time for it to go?
>>>
>>> Please no.
>>>
>>> Operator overloading for ^^ is a really nice quality of life 
>>> improvement for numerical and scientific programming.
>>>
>>> All five major numerical programming languages support this: 
>>> MATLAB, Python, Fortran, Julia, and R.
>>
>> We should have more operators, not fewer.
>
> I have found that R’s custom infix operators are nice [1]. They 
> have a good balance between allowing library writers to be 
> expressible, as well as a bit of a warning that "here be 
> dragons".
>
> For those not familiar, putting an R example into a D context 
> it would mean you could do something like
>
> ```
> struct Foo
>     double x;
>     bool opBinary(string op)(double y)
>         if (op == "%divisible%")
>     {
>         return x % y == 0 ? true : false;
>     }
> }
> ```
> where the basically the `"op"` can be anything so long as it is 
> delimited in a form like "%op%"
>
> It would be even better if you could do something like (to my 
> knowledge `opBinary` would need to be a member function).
>
> ```
> bool opBinary(string op)(double x, double y)
>     if (op == "%divisible%")
> {
>     return x % y == 0 ? true : false;
> }
> ```
>
> [1] https://www.datamentor.io/r-programming/infix-operator

An important decision they made is that you can have custom 
operators, but you can't change the precedence.[1] You can add 
parens to your code if you want to customize precedence. There 
are really no downsides to custom operators.

[1] 
https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Infix-and-prefix-operators


More information about the Digitalmars-d mailing list