Buddha Buck writes:
: At 08:58 AM 04-23-2002 -0700, Larry Wall wrote:
: >Precedence is set with the "like' property:
: >
: > my sub operator:now ($a,$b) is like("but") is inline { $a but $b }
: > sub operator:also ($a,$b) is like("and") is inline { $a and $b }
:
: OK, but that limits you to the, um, 24 standard levels of precedence. What
: do you do if you don't think that that's enough. Let's say you want to
: define a "nand" operator:
:
: my sub operator:nand ($a, $b) is inline { not ($a and $b) }
:
: but you want nand to have a precedence lower than the existing 'and' but
: higher than the existing 'or' (for some reason I can't imagine
: offhand). It isn't like() anything, since there isn't anything currently
: between 'and' and 'or'. Would that be something like:
:
: my sub operator:nand ($a, $b) is below("and") is inline {not ($a and $b) }
Yes, that's what I was thinking. And the dimensions shrink every time
you do that, so if something is "above" your C<nand>, it doesn't go
back to being the same as C<and>.
Though since people can't seem to keep up and down straight on their
precedence charts, I'd go for "tighter" and "looser" or some such. I
think I'm even on the record somewhere about that.
Larry