Atop (operator)
⍤

Atop (⍤
) is a primitive dyadic operator which takes two function operands and produces a derived function which uses the left operand monadically to postprocesses the result of the ambivalent right operand.
Explanation
When the resulting function is used monadically, it has the same behaviour as if the Atop 2train or any of the Beside or Over operators had been used:
(g ⍤ h) ⍵ 
g (h ⍵) 
When the resulting function is used dyadically, the result is postprocessed:
⍺ (g ⍤ h) ⍵ 
g (⍺ h ⍵) 
Examples
x←3 1 2 y←4 6 5 x ⍤⌈ y ⍝ the negation of the max of x y ¯4 ¯6 ¯5 ⍝ same as x⌈y ¯4 ¯6 ¯5
Close composition
In SHARP APL and J, Atop is implemented as a close composition, meaning that (using SHARP syntax) f⍥g
has the overall function rank of g
. J uses @
for the close form and @:
for the rankless form that appears in modern APLs.
History
Atop was defined as subordinate to Over in Ken Iverson's 1978 paper Operators and Functions: that is, the derived function f¨g
works as an Atop if f
is strictly monadic or (in the dyadic case) g
is strictly dyadic. He called it Composition, as there was no Atop operator. It was added to SHARP APL as a close composition with glyph ⍥
and name "upon" (initially "over"), with a limited implementation in 1981^{[1]} followed by a full implementation in 1983 with the introduction of function rank.^{[2]} The name "Atop" was introduced by J (which uses "At" for its nonclose form). The glyph ⍤
was chosen for Dyalog APL 18.0, shared with the Rank operator.
External links
Lessons
Documentation
 Dyalog
 J Dictionary, NuVoc
 BQN
 ↑ "Composition and Enclosure". SATN41, 19810620.
 ↑ "Language Extensions of May 1983". SATN45, 19830502.