Each: Difference between revisions
(Added examples) |
m (Added the reverse example provided by Adam) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 10: | Line 10: | ||
1,1 2 3 ⍝ join 1 with 1 2 3 | 1,1 2 3 ⍝ join 1 with 1 2 3 | ||
1 1 2 3 | 1 1 2 3 | ||
1,¨1 2 3 | 1,¨1 2 3 ⍝ join 1 with each element of 1 2 3 | ||
┌───┬───┬───┐ | ┌───┬───┬───┐ | ||
│1 1│1 2│1 3│ ⍝ | │1 1│1 2│1 3│ | ||
└───┴───┴───┘ | |||
x←'abc' 'def' 'ghi' | |||
⌽x ⍝ reverse x | |||
┌───┬───┬───┐ | |||
│ghi│def│abc│ | |||
└───┴───┴───┘ | |||
⌽¨x ⍝ reverse each element of x | |||
┌───┬───┬───┐ | |||
│cba│fed│ihg│ | |||
└───┴───┴───┘ | └───┴───┴───┘ | ||
</source> | </source> | ||
The Each operator has no effect on [[scalar function]]s, since these functions already map over each array element. | |||
For example, both | For example, both expressions below have the same meaning, since <source lang=apl inline>+</source> is a scalar function. | ||
<source lang=apl> | <source lang=apl> | ||
1 + 1 2 3 4 | 1 + 1 2 3 4 |
Revision as of 13:04, 3 September 2021
¨
|
Each (¨
) is a primitive monadic operator which applies its operand to each element of the arguments, and returns an array whose elements are the results. If two arguments are given, their elements are matched using conformability rules.
Each is defined only in nested APLs. Some flat APLs obtain analogous functionality by using an Under operator with close composition along with the rank-0 function Disclose (or Unbox). In SHARP APL this is written f¨>
. In J it is f&.>
.
Each differs from the Rank operator with rank 0 in that the operand arguments and results are not enclosed. As the elements of a nested array they need not be scalar.
For example,
1,1 2 3 ⍝ join 1 with 1 2 3 1 1 2 3 1,¨1 2 3 ⍝ join 1 with each element of 1 2 3 ┌───┬───┬───┐ │1 1│1 2│1 3│ └───┴───┴───┘ x←'abc' 'def' 'ghi' ⌽x ⍝ reverse x ┌───┬───┬───┐ │ghi│def│abc│ └───┴───┴───┘ ⌽¨x ⍝ reverse each element of x ┌───┬───┬───┐ │cba│fed│ihg│ └───┴───┴───┘
The Each operator has no effect on scalar functions, since these functions already map over each array element.
For example, both expressions below have the same meaning, since +
is a scalar function.
1 + 1 2 3 4 2 3 4 5 1 +¨ 1 2 3 4 2 3 4 5
External links
Lessons
Documentation