To view parent comment, click here.
To read all comments associated with this story, please click here.
That's an interesting idea, which would indeed fit best with common people's experience. The nice thing about REBOL is that it's a meta language: you have control over how the language is evaluated. REBOL makes it easy to write an expression evaluator that would use the rules you stated. I would indeed implement such an evaluator if I would allow users to enter their own expressions, for example in a calculator application.
I absolutely disagree. There are 2 choices to my mind:
1. Use standard precedences for arithmetic, comparison and logic operators as defined in common mathematical usage.
2. Have everything use standard precedences.
C's implementation is actually flawed - Ritchie himself acknowledges so (http://cm.bell-labs.com/cm/cs/who/dmr/chist.html), so blindly copying that seems the wrong approach.
So you never learned any of the mnemonics for operator precedence? Or indeed had to learn in in school, or where it is still very much needed in real life?
If you start with the assumption that unary operators come first, and comparison and logical operators come at the end, then the old saw of My Dear Aunt Sally (multiplication, division, addition, subtraction) holds.
Or like how people do with real math, or have to do in REBOL to make sure the intent is clear?
I am not impresses with this argument. I have met many die hard proponents of Smalltalk, APL, Lisp, and Forth — and with the exception of Forth — none of them have actually claimed that the precedence in their language was somehow better. Instead they would say something like "well the operator precedence is a bit funky, but that is a consequence of how the language works, you will get used to it"
I will end as a general thought: It's ok to admit the flaws of something you love. It isn't somehow admitting defeat. Nothing that is useable in the real world is perfect. Nor in promoting your thing, do you need to talk down something else.
There are many flaws in REBOL, but this is not one of them. We're fixing many of the other flaws in Red, but we're pleased with the default expression precedence as it is.
As I noted before, REBOL makes it easy to implement your own expression evaluator with different precedence when you want.





Member since:
2010-06-09
My "The C Programming Language, Second Edition" falls open at page 53, where the precedence table of operators is. When I program in C, I often need to refer to it, because it's too complex to remember. Much C code acknowledges that by not even relying on precedence, but littering expressions with parentheses to make them unambiguous.
This problem doesn't exist in REBOL and Red, because they have only two simple precedence rules:
- Operators evaluate from left to right.
- Infix operators take precedence over prefix functions.
If you want * to take precedence over +, you can simply write
1 + (2 * 3)
However, as a REBOL programmer you quickly get used to writing it as
2 * 3 + 1