Come for the quick hacks, stay for the epiphanies. | |
PerlMonks |
Re^5: 'xor' operator is not a sibling to 'or' and 'and'?by LanX (Saint) |
on Dec 19, 2019 at 14:41 UTC ( [id://11110393]=note: print w/replies, xml ) | Need Help?? |
Perl has no Boolean type, it is interpreting values in boolean context, (which is a specialized scalar context). There are only two default scalars 1 and ""/0 (i.e. !!1 and !!0) in case a Boolean result needs to be generated, like when using not (sic) The extra behaviour of and/or to return the last evaluated side is closely related to short circuiting, and will by definition lead to a appropriate scalar again. AFAIK is this feature boroughed from C, but can't be possibly extended to not or even xor
UpdateThat's easily proven by translating xor to a term based on and/or, since this can't be done without not A xor B := ( A and not B) or ( B and not A) Besides inconsistencies it's also not well defined, because the two sides of the and/or terms can be swapped (commutativity)
Cheers Rolf
In Section
Seekers of Perl Wisdom
|
|