Atop (operator)

is a primitive dyadic operator which takes two function operands and produces a derived function which uses the left operand monadically to post-processes the result of the ambivalent right operand.

Explanation
When the resulting function is used monadically, it has the same behaviour as if the Atop 2-train or any of the Beside or Over operators had been used: When the resulting function is used dyadically, the result is post-processed:

Close composition
In SHARP APL and J, Atop is implemented as a close composition, meaning that (using SHARP syntax)  has the overall function rank of. 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  works as an Atop if   is strictly monadic or (in the dyadic case)   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 followed by a full implementation in 1983 with the introduction of function rank. The name "Atop" was introduced by J (which uses "At" for its non-close form). The glyph  was chosen for Dyalog APL 18.0, shared with the Rank operator.

Lessons

 * APL Cultivation

Documentation

 * Dyalog
 * J Dictionary, NuVoc
 * BQN