More on semantics of opPow: return type
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Dec 7 14:56:34 PST 2009
Bill Baxter wrote:
> On Mon, Dec 7, 2009 at 2:30 PM, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>> Lars T. Kyllingstad wrote:
>>> The fundamental reason why I want opPow so badly is in fact not even how
>>> often I use it. If that was the case, I'd want a special "writefln" operator
>>> as well. The main reason is that exponentiation is such a basic mathematical
>>> operation, right up there with addition and multiplication, that it deserves
>>> an operator of its own.
>> Hmmm. Addition, subtraction, multiplication, and division with remainder are
>> all closed over integers. Power isn't. It's not even closed over real
>> numbers. That makes it quite special and quite non-basic.
>
> Uh, but a/b is not a "division with remainder" operator. It's just
> division-with-a-remainder-silently-ignored.
The result of a/b is the quotient resulting from a division with
remainder. If you want the remainder use a%b (the compiler will
peephole-optimize that). I don't see anything wrong with what I said.
> If you want to define pow in the same way as a "pow with remainder but
> with the remainder ignored" then there's nothing stopping you.
>
> 1^^-1 == 1
> 2^^-1 == 0
> 4^^(1/2) == 2
> 5^^(1/2) == 2
>
> Though I'd rather go the other direction and make the
> remainder-dropping integer division use a different symbol a la
> Python.
You'd need to show that "power with remainder" as you just defined it is
useful theoretically and/or practically. The usefulness of integral
division is absolutely massive.
Anyhow, all I did was to explain that a particular argument that was
made is invalid. That doesn't mean other arguments are invalid. All I'd
hope is that ^^ doesn't suddenly become a time sink when we have so much
other stuff to worry about. Again: ^^ was a lot more attractive to me
when it seemed like a slam dunk.
Andrei
More information about the Digitalmars-d
mailing list