From APL Wiki
Jump to navigation Jump to search

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).


When the resulting function is used monadically, it has the same behaviour as if the Beside or Atop operator had been used:

  (g  h) 
g (h )

When the resulting function is used dyadically, both arguments are pre-processed:

 (g  h) 
(h ) g (h )


      x3 1 2
      y4 6 5
      x +(/) y ⍝ add the max of x and max of y
      ⍝ same as

Close composition

In SHARP APL and J, Over is implemented as a close composition, meaning that (using SHARP syntax) fg has the overall function rank of g. J uses & for the close form and &: for the rankless form that appears in modern APLs.


Ken Iverson defined Over in 1978 as part of Operators and Functions,[1] with the glyph ¨. He called it Composition, as there was no Atop operator. It was added to SHARP APL as a close composition with glyph 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 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




  1. Ken Iverson. Operators and Functions, §8 Composition and Duality. IBM Research Report #RC7091. 1978-04-26.
  2. "Composition and Enclosure". SATN-41, 1981-06-20.
  3. "Language Extensions of May 1983". SATN-45, 1983-05-02.
  4. Composition. NARS2000 Wiki.
  5. Adam Brudzewsky. Chat message 42021088. APL Orchard. 31 Dec 2017.
APL built-ins [edit]
Primitive functions
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndex
Selector Index generatorGradeIndex OfInterval IndexIndicesDeal
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Primitive operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencilCut (J)
Quad names
Arrays Index originMigration levelAtomic vector
Functions Name classCase convertUnicode convert
Operators SearchReplace