If I understand correctly, so far we have the following meta-operators:

[ ]
circumfix meta-operator on infix operator which produces a prefix operator

>> <<
circumfix meta-operator on infix operator which produces an infix operator

=
postfix meta-operator on infix operator which produces an infix operator

>>
prefix meta-operator on postfix operator which produces a postfix operator

<<
postfix meta-operator on prefix operator which produces a prefix operator

In other words:
+---------+-----------+-------------+------------+
| Meta-op | is        | operates on | to produce |
+---------+-----------+-------------+------------+
| [ ]     | circumfix | infix       | prefix     |
+---------+-----------+-------------+------------+
| >> <<   | circumfix | infix       | infix      |
+---------+-----------+-------------+------------+
| =       | postfix   | infix       | infix      |
+---------+-----------+-------------+------------+
| >>      | prefix    | postfix     | postfix    |
+---------+-----------+-------------+------------+
| <<      | postfix   | prefix      | prefix     |
+---------+-----------+-------------+------------+

>From this table, we can see that [ ] is the only meta-operator that
produces a different 'type' of operator from that which it accepts,
which might be where the confusion lies. As long as each meta-operator
explicitly knows what type of regular operator it accepts (and
produces), there shouldn't be any problems with ambiguity.

Reply via email to