On Thu, 26 Sep 2002, Sean O'Rourke wrote: : Thanks for taking the time to write this out. : : On Thu, 26 Sep 2002, John Williams wrote: : > perl6 operator precedence : > : > left terms and list operators (leftward) [] {} () quotes : > left . and unary . : > nonassoc ++ -- : > left is but : : This would lead to some scary things, I think: : : $a = 3 + 4 but false : => (= $a (+ 3 (but 4 false))) : : Of course, so does having low precedence: : : $a = 3 but false + 4 : => (= $a (but 3 (+ false 4))) : : but I think the latter is unnatural enough that it deserves parens, so I'd : put 'but' above comma (and probably '='), but below just about everything : else.
Could perhaps unify with C<..>. Wouldn't hurt for it to be non-associative like C<..>. : > Larry mentions that other precedence unifications are possible. I can see : > the following as possibilites. Are there others? : > & with && : > | with || : : It seems like a good idea to me to encourage people to think of bitwise : ops as mathematical, not logical, so I'd rather see them with different : precedences. Plus, anything that significantly goes against people's : hard-wired C expectations will just lead to confusion and pain. Finally, : having '|' below '&&' will probably lead to strange things, e.g. : : 1|2 && 3|4 : => 1 | (2 && 3) | 4 I'd be more inclined to unify & and | with * and +, since that's exactly what they are in Boolean algebra, where 1*1 == 1. I think the argument that it breaks C compatibily is weak in this case, since almost everyone admits that C is broken in this respect. Alternately, we take | and & away from bitwise ops and do something more useful with them. I have been asked privately by a sight impaired person to consider using | as the separator for parallel streams rather than the almost invisible ; character, for instance. Being a bit sight impaired myself at the moment, I have great empathy... Larry