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