Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No Power operator #113

Open
moonheart08 opened this issue Dec 6, 2017 · 7 comments
Open

No Power operator #113

moonheart08 opened this issue Dec 6, 2017 · 7 comments

Comments

@moonheart08
Copy link

The Power operator is used to raise a number by a power of x.
Pony, however, lacks this rather important operator.

@jemc
Copy link
Member

jemc commented Dec 7, 2017

To be clear, we already have a method called pow that does this - it's just that there isn't any syntax sugar for having the compiler translate a binary operator to that method call. I think you already know this, I just wanted to be clear for anyone reading along.

I wouldn't be opposed to such a change.

If we do this, I think the best choice for the operator is probably ** - we can't/shouldn't use ^ because it already has another meaning in Pony (it's the ephemeral type indicator).

@mfelsche
Copy link
Contributor

mfelsche commented Dec 7, 2017

pow is only defined on FloatingPoint, as well as powi which are implemented using http://llvm.org/docs/LangRef.html#llvm-pow-intrinsic and http://llvm.org/docs/LangRef.html#llvm-powi-intrinsic.

There is no pow in C or C++ as well that operates on integer types. it is only defined on float, double and long double. (This sheds some light on the why: https://stackoverflow.com/questions/2398442/why-isnt-int-powint-base-int-exponent-in-the-standard-c-libraries)

So there is no easy way to implement this without casting, if you don't write it completely in pony.

@mfelsche
Copy link
Contributor

mfelsche commented Dec 7, 2017

Maybe, if this is going to be implemented, Exponentiation by Squaring is a good candidate.

@moonheart08
Copy link
Author

I'm fine if POW is float only by necessity. A software implementation of it for integers would not be needed, but it would be nice.

@SCKelemen
Copy link

So, is there an XOR operator, then?

@EpicEric
Copy link

@SCKelemen Yes. The syntatic sugar is "xor". Example: https://playground.ponylang.io/?gist=19f5ff394234d6e19ec5bcd1b66ea9d0

@igotfr
Copy link

igotfr commented Jun 6, 2021

I suggest change the current ephemeral type indicator (^) to another like # or whatever

motivation: use of ^ to exponentiation

languages and others that use ^ as exponentiation: Haskell, Julia, Matlab, R, Lua, Google, calculators

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants