Over
Over (⍥
) is a primitive dyadic operator which takes two function operands and produces a derived function which pre-processes the argument(s) using the monadic right operand, before applying the left operand on/between the result(s).
Explanation
When the resulting function is used monadically, it has the same behaviour as if the Beside or Atop operator had been used:
<source lang=apl> (g ⍥ h) ⍵</syntaxhighlight> | <source lang=apl>g (h ⍵)</syntaxhighlight> |
When the resulting function is used dyadically, both arguments are pre-processed:
<source lang=apl>⍺ (g ⍥ h) ⍵</syntaxhighlight> | <source lang=apl>(h ⍺) g (h ⍵)</syntaxhighlight> |
Examples
<source lang=apl>
x←3 1 2 y←4 6 5 x +⍥(⌈/) y ⍝ add the max of x and max of y
9
⍝ same as (⌈/x)+⌈/y
9 </syntaxhighlight>
Close composition
In SHARP APL and J, Over is implemented as a close composition, meaning that (using SHARP syntax) <source lang=apl inline>f⍤g</syntaxhighlight> has the overall function rank of <source lang=apl inline>g</syntaxhighlight>. J uses &
for the close form and &:
for the rankless form that appears in modern APLs.
History
Ken Iverson defined Over in 1978 as part of Operators and Functions,[1] with the glyph <source lang=apl inline>¨</syntaxhighlight>. He called it Composition, as there was no Atop operator. It was added to SHARP APL as a close composition with glyph <source lang=apl inline>⍤</syntaxhighlight> and name "on", with a limited implementation in 1981[2] followed by a full implementation in 1983 with the introduction of function rank.[3]
The glyph <source lang=apl inline>⍥</syntaxhighlight> appeared in NARS2000, with name "Composition", by 2011.[4] The name "Over" was used in Dyalog APL 18.0, suggested by Adám Brudzewsky.[5]
External links
Lessons
Documentation
- Dyalog
- J Dictionary, NuVoc
- BQN
References
- ↑ Ken Iverson. Operators and Functions, §8 Composition and Duality. IBM Research Report #RC7091. 1978-04-26.
- ↑ "Composition and Enclosure". SATN-41, 1981-06-20.
- ↑ "Language Extensions of May 1983". SATN-45, 1983-05-02.
- ↑ Composition. NARS2000 Wiki.
- ↑ Adam Brudzewsky. Chat message 42021088. APL Orchard. 31 Dec 2017.