On 16 Oct 2002, Smylers wrote:
: Larry Wall wrote:
: 
: > :   $x ~& $y  # bitwise and
: > :   $x ~| $y  # bitwise or
: > : 
: > :   ~!$x      # bitwise not
: > 
: > I think I like that.  Except now we'll get things like:
: > 
: >     @x ^~|= @y;
: > 
: > Hmm...and then there's:
: > 
: >     $a ~? $b ~: $c
: 
: I don't think they're too problematic.  Most people shouldn't need to
: know the bitwise stuff, and for those who do a consistent prefix makes
: it easier to learn.

True.  In linguistics we would call it a "productive" prefix, meaning you
can generate new words using it.

: It's rare enough to need bitwise things in Perl 5 (outside golf).  I'm
: hoping that it'll be even rarer in Perl 6, as better interfaces are
: designed for the things which at present require flipping individual
: bits.

I almost wonder if it's wrong to waste ~ on it...

That would be an argument for b| and b&, I suppose.

: > And what's bitwise xor?
: 
: How about keeping caret for xor?
: 
:   $a ~^ $b  # bitwise xor
:   $a ^^ $b  # logical xor
: 
: I don't think those will clash with the hyper operator.

Depends on whether Damain decides he needs ^ as a superposed "exclusive or"
to go with & and |.  That would make ^^ a hyper super xor.

: Hmmm.  I'm not sure they look sufficiently different from each other
: though.  And it does lead to:
: 
:   @a ^^^ @b
:   @a ^~^ @b
: 
: The first of those contains a tripled operator (the thing I was trying
: to avoid when I started this suggestion).

We may well make ^ a separable prefix, so you could write @a ^ ^^ @b.
But it still seems a bit confusing to have two different meanings for ^.

: And both of them run the risk of looking like they're underlining
: whatever's on the line above rather than being operators ...

Score one for using !.  Binary !! for xor would be snazzy.  And Damian
could have binary ! for super xor if he wants it, and if we don't swipe
it for a unary postfix of some sort.

By the way, we could also allow space in an assignment op, so that

    @x ^~|= @y;

could be written:

    @x ^ ~| = @y;

But I'm not sure that's an improvement...

Larry

Reply via email to