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