Over

From APL Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

  (g ⍥ h) ⍵
g (h ⍵)

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

⍺ (g ⍥ h) ⍵
(h ⍺) g (h ⍵)

Examples

      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

Close composition

In SHARP APL and J, Over 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

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] Over also appears in dzaima/APL (since 2018, before Dyalog 18.0), April, and Kap.

External links

Lessons

Documentation

References

  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]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)
Quad names Index originComparison toleranceMigration levelAtomic vector