Raku Programming/Meta Operators

Meta Operators
Operators do things to data. Meta operators do things to operators.

Reduction Operators
Reduction operators act on a list and return a scalar value. They do this by applying the reduction operator between every pair of elements in the array:

The  square brackets turn any operator that normally acts on scalars into a reduction operator to perform that same operation on a list. Reductions can also be used with relational operators:

Hyper Operators
Reduction operators apply an operator to all the elements of an array and reduces it to a single scalar value. A hyper operator distributes the operation over all the elements in the list and returns a list of all results. Hyperoperators are constructed using the special "french quotes" symbols: « and ». If your keyboard doesn't support these, you can use the ASCII symbols  and   instead.

You can also use unary operators with hypers:

Unary hyperoperators always return an array that is exactly the same size as the list it is given. Infix hyperoperators have different behavior depending on the sizes of its operands.

Pointing the hyper symbols in different directions affects how Raku treats the elements. On the sharp side, it extends the array to be as long as the one on the dull side. If both sides are sharp, it will extend whichever is smaller.

Hypers can also be used with assignment operators:

Cross Operators
The cross is a capital  symbol. As an operator, the cross returns a list of all possible lists made by combining the elements of its operands:

The cross can also be used as a meta operator, applying the operator it's modifying against every possible combination of elements from each operand: