http://qs1969.pair.com?node_id=733341


in reply to Re^5: Burned by precedence rules (== true)
in thread Burned by precedence rules

In Perl 6 we can use positive boolean context, which helps readability a little:
if ?$x == ?$y {...} if ?$x != ?$y {...}
We can use junctions, which again helps the different case more than the same case:
if not $x ^ $y {...} if $x ^ $y {...}
or if you prefer:
if !one($x,$y) {...} if one($x,$y) {...}
That's probably enough ways to do it...

Replies are listed 'Best First'.
Re^7: Burned by precedence rules (eqv)
by tye (Sage) on Dec 31, 2008 at 02:14 UTC

    Nah. Clearly this demonstrates the utility of a few "Boolean comparison" operators:

    if $isFree ?= $isEasy if $isOne !?= $isOther unlink $dev eqv unlink $prod or die "Inconsistent state"; system $verifyUser neqv system $verifyAdmin or die "You are not just either a User or an Admin";

    ;)

    - tye        

      Well, we can't use eqv because we already use that for something else, but we do have a Boolean not-equal already:
      $x ?^ $y
      What we don't have is a Boolean equal. I thought about adding:
      $x ?= $y
      but people would probably think that means:
      $x = $x ? $y;
      which is nonsense, but they'd still think it. :-)

      Anyway, the utility is not worth the extra complexity, in my opinion. Comparing two Booleans for equivalence is an odd enough thing to do that I don't mind if it looks a little odd.

        What about saying that !( potential boolean operator ) means the boolean negation of the boolean operator? That would naturally give you the logical operators !&& (nand), !|| (nor) and !^ (not xor). The last would, of course, be Boolean equals.

        (I can't believe I just suggested that.)

        Note that I did include a winky smiley. But I saved the clincher argument for now: Perl 6 is becoming so like VB, it will be very surprising to VBers when the purpose of eqv is so different. :-D

        - tye