On Feb 29, 5:09 am, Xah Lee <xah...@gmail.com> wrote: > New Science Discovery: Perl Idiots Remain Idiots After A Decade! > > A excerpt from the new book 〈Modern Perl〉, just published, chapter 4 > on “Operators”. Quote: > > «The associativity of an operator governs whether it evaluates from > left to right or right to left. Addition is left associative, such > that 2 + 3 + 4 evaluates 2 + 3 first, then adds 4 to the result. > Exponentiation is right associative, such that 2 ** 3 ** 4 evaluates 3 > ** 4 first, then raises 2 to the 81st power. » > > LOL. Looks like the perl folks haven't changed. Fundamentals of > serious math got botched so badly. > > Let me explain the idiocy. > > It says “The associativity of an operator governs whether it evaluates > from left to right or right to left.”. Ok, so let's say we have 2 > operators: a white triangle △ and a black triangle ▲. Now, by the > perl's teaching above, let's suppose the white triangle is “right > associative” and the black triangle is “left associative”. Now, look > at this: > > 3 △ 6 ▲ 5 > > seems like the white and black triangles are going to draw a pistol > and fight for the chick 6 there. LOL. > > Now, let me tell you what operator precedence is. First of all, let's > limit ourselfs to discuss operators that are so-called binary > operators, which, in our context, basically means single symbol > operator that takes it's left and right side as operands. Now, each > symbol have a “precedence”, or in other words, the set of operators > has a order. (one easy way to think of this is that, suppose you have > n symbols, then you give each a number, from 1 to n, as their order) > So, when 2 symbols are placed side by side such as 「3 △ 6 ▲ 5」, the > symbol with higher precedence wins. Another easy way to think of this > is that each operator has a stickiness level. The higher its level, it > more sticky it is. > > the problem with the perl explanations is that it's one misleading > confusion ball. It isn't about “left/right associativity”. It isn't > about “evaluates from left to right or right to left”. Worse, the word > “associativity” is a math term that describe a property of algebra > that has nothing to do with operator precedence, yet is easily > confused with because it is a property about order of evaluation. (for > example, the addition function is associative, meaning: 「(3+6)+5 = > 3+(6+5)」.) > > compare it with this: > > 〈Perl & Python: Complex > Numbers〉http://xahlee.org/perl-python/complex_numbers.html > > and for a good understanding of functions and operators, see: > > 〈What's Function, What's > Operator?〉http://xahlee.org/math/function_and_operators.html
associativity of operators mean little in the Lisp world obviously, so why was this posted here? Sorry, perl, python and emacs folks... BTW, it's the same in javascript: it is so such that 2 + 3 + "4" is "54" and "2" + 3 + 4 is "234". Blame weak typing and + overloading, though it may be a blessing. -- http://mail.python.org/mailman/listinfo/python-list