Oh boy, I just *hate* the idea of C<X> for xor.
Hate it, hate it, hate it! Yuck, yuck, yuck!

But I do like Michael's idea of using C<@> as the hyperoperator marker
(the array connotation works well, I think). The only problem is that
we end up with too many C<@>'s in most expressions:

	$count = @a + @b;
	@sums  = @a @+ @b;


My personal favorite solution is to use square brackets (for their dual
array and indexing connotations, and because they highlight the operator
so nicely):

	$count = @a + @b;
	@sums  = @a [+] @b;


I also think that binary C<!> as a none-ary superposition compositor is
a mistake. And that C<!!> and C<nor> would be even bigger ones. That's
because something like:

	if $x ! $y ! $z { ... }
or:
	if $x !! $y !! $z { ... }

is surreptitiously negative. Specifically, it's that missing "neither"
in from of the first operand that niggles. I'd much rather people had
to write one of these:

	if !($x || $y || $z) { ... }

	unless $x || $y || $z { ... }


With that in mind, by freeing up C<^> to resume its original xorish duties,
we get:


	unary (prefix) operators:
	
	  !     - force to bool context, negate
	
	  ~     - force to string context
	
	  +^    - force to numeric context, complement
	  ~^    - force to string context, complement
	
	
	hyperoperators:
	
	  [op]     - around any unary/binary operator, "vectorizes" the operator
	
	binary operators:
	
	  ~                             - string concatenation
	  ~=                            - string append
	
	  &&    ||    ^^    //          - boolean operations
	  &&=   ||=   ^^=   //=
	  and   or    xor   err
	
	  +&    +|    +^    <<    >>    - bitwise operations
	  +&=   +|=   +^=   <<=   >>=
	
	  ~&    ~|    ~^                - charwise operations
	  ~&=   ~|=   ~^=
	
	  ?&    ?|    ?^                - [maybe] C-like bool operations
	  ?&=   ?|=   ?^=               - (result is always just 1 or 0)
	
	   &     |     ^                - superpositional operations
	   &=    |=    ^=               - conjunctive, disjunctive, exclusive
	  all   any   one   none        - conjunctive, disjunctive, exclusive, dismissive

          ~~  !~                        - smart match, smart non-match


Damian

Reply via email to