Hacker News new | ask | show | jobs
by brospars 1397 days ago
There is something wrong with the order of operations. When I type 2+2*2-6 i get -6 which should be 0.
4 comments

I would think this might be the first unit test one would write for a calculator program.
Yep, this should be evaluated as `(- (+ 2 (* 2 2)) 6)`
It looks like APL order? Right-to-left.
No. It’s not right to left. It’s just weird:

  3 ^ 1 * 2   6
  3 ^ 1 / 2   1.73205
  3 ^ 1 + 2   5
  3 ^ 1 - 2   1
Huh.
Oh there's more:

9 - 3 ^ 2 = 0

9 -3 ^ 2 = 18 ???

pi = 3.1415926536

2 pi = 5.1415926536 ???

sin(3.1415926536 radians) = -0

sin(pi radians) = Incompatible units ???

Seems to assume + if an arithmetic operator is missing?
This is correct, the idea is that you can type things like "6 foot 3 inches" and have it evaluate as an addition. But the example shown above is definitely a problem, I'll try to think of a work around.
I'd think that rule only makes sense after a symbol representing a unit (including potentially 6'3"). Certainly <number> <named constant> should logically assume multiplication.