On 4/11/20 12:28 PM, Mark Dilger wrote: > >> On Apr 11, 2020, at 9:13 AM, Andrew Dunstan <andrew.duns...@2ndquadrant.com> >> wrote: > Hi Andrew. I appreciate your interest and efforts here. I hope you don't > mind a few questions/observations about this effort:
Not at all. > >> The >> last one fixes the mixture of high and low precedence boolean operators, > I did not spot examples of this in your diffs, but I assume you mean to > prohibit conditionals like: > > if ($a || $b and $c || $d) > > As I understand it, perl introduced low precedence operators precisely to > allow this. Why disallow it? The docs say: Conway advises against combining the low-precedence booleans ( |and or not| ) with the high-precedence boolean operators ( |&& || !| ) in the same expression. Unless you fully understand the differences between the high and low-precedence operators, it is easy to misinterpret expressions that use both. And even if you do understand them, it is not always clear if the author actually intended it. |next| |if| |not ||$foo| ||| ||$bar||; ||#not ok| |next| |if| |!||$foo| ||| ||$bar||; ||#ok| |next| |if| |!( ||$foo| ||| ||$bar| |); ||#ok| I don't feel terribly strongly about it, but personally I just about never use the low precendence operators, and mostly prefer to resolve precedence issue with parentheses. > >> and the use of commas to separate statements > I don't understand the prejudice against commas used this way. What is wrong > with: > > $i++, $j++ if defined $k; > > rather than: > > if (defined $k) > { > $i++; > $j++; > } > I don't think the example is terribly clear. I have to look at it and think "Does it do $i++ if $k isn't defined?" In the cases we actually have there isn't even any shorthand advantage like this. There are only a couple of cases. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services