Well, the P in PEMDAS stands for 'brackets'. The clearest example, even though it's rather uncommon:
a := x ** y ** z
(and that's hoping the language does the OOE for exponentiation arithmetically correctly) versus
(setf a (expt x (expt y z)))
It's a bit like how Reverse Polish Notation is superior to the infix notation we torture ourselves with (x + y * z or (x + y) * z versus x y z * + or x y + z *).
But that's just associativity, not the order of evaluation? E.g. in C# expressions are evaluated strictly left to right, so if it had operator **, the order of evaluation would've been:
Comments
My apologies, it should've been (if you insist on indentation)
Would you care to elaborate about brackets helping with tracking the order of execution? I'm really curious about that part.TXR Lisp, with infix via ifx macro:
Well, the P in PEMDAS stands for 'brackets'. The clearest example, even though it's rather uncommon:
(and that's hoping the language does the OOE for exponentiation arithmetically correctly) versus It's a bit like how Reverse Polish Notation is superior to the infix notation we torture ourselves with (x + y * z or (x + y) * z versus x y z * + or x y + z *).But that's just associativity, not the order of evaluation? E.g. in C# expressions are evaluated strictly left to right, so if it had operator **, the order of evaluation would've been:
And, eh, I am not really that convinced that is much less torturous than