```Hyperators
¯¯¯¯¯¯¯¯¯¯
Functions take arrays as arguments;
¯¯¯¯¯¯¯¯¯      ¯¯¯¯¯¯    ¯¯¯¯¯¯¯¯¯
Operators take functions (and arrays) as operands;
¯¯¯¯¯¯¯¯¯      ¯¯¯¯¯¯¯¯¯                 ¯¯¯¯¯¯¯¯
Q: What takes operators?

Hyperators take operators (and functions (and arrays)) as hyperands.
¯¯¯¯¯¯¯¯¯¯      ¯¯¯¯¯¯¯¯¯                                 ¯¯¯¯¯¯¯¯¯
Clearly, this is a never-ending sequence.

A proof of the (need for the) existence of hyperators:

0. We like to write tools that deal with  APL entities (arrays, functions, oper-
ators) as subjects. For example, we like to:

- Format them by drawing boxes around subarrays and by aligning the comments
within the source code of functions and operators.

- Search for text within the character representations of these entities.

- Determine the amount of worspace they occupy.

- ... and so on.

1. APL entities may be named: "vec", "sum", "twice" or not: 'ab', +/, {⍺⍺ ⍺⍺ ⍵}.

2. For named entities, we have the rather ugly option of passing the name to the
tool:  ⎕SIZE'vec', ⎕AT'sum', ⎕CR'twice', ...

3. For unnamed entities, we do not have this option.

- To examine an unnamed array, we must pass it as argument to the analysis
function.             ¯¯¯¯¯                     ¯¯¯¯¯¯¯¯
¯¯¯¯¯¯¯¯
- To examine an unnamed function, we must pass it as operand to an operator.
¯¯¯¯¯¯¯¯                     ¯¯¯¯¯¯¯       ¯¯¯¯¯¯¯¯
- To examine an unnamed operator, we must pass it as hyperand to a hyperator.
¯¯¯¯¯¯¯¯                     ¯¯¯¯¯¯¯¯      ¯¯¯¯¯¯¯¯¯
- ... and so on.

Q.E.D.

Back to: contents

Back to: Workspaces
```