# Over: Difference between revisions

 `⍥`

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) ⍵ ``` ${\displaystyle \Leftrightarrow }$ ```g (h ⍵) ```

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

 ```⍺ (g ⍥ h) ⍵ ``` ${\displaystyle \Leftrightarrow }$ ```(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]