Pair

or Juxtapose is a primitive ambivalent function that constructs a vector of its arguments, present in Extended Dyalog APL, dzaima/APL, and BQN (as ). The monadic case is referred to as Half Pair in Extended Dyalog APL, and is similar to Enclose except that it gives a result of rank 1 rather than 0. This case is called Enlist in BQN, as well as K, where it is the monadic case of  (K has no dyadic Pair primitive). Dyadic Pair is similar to the Link primitive in SHARP APL and J, but Link has an asymmetric definition that adds its left argument to a vector right argument rather than creating a new vector.

Pair can be implemented as the dfn, or the catenation of the enclosed arguments, written   using Over. Pair aids in constructing nested arrays in tacit programming, where stranding by juxtaposition is not available.

Common usage
Its plain usage is in pairing up two parallel values:

Try it online!

It can also be combined with Mix to increase rank rather than depth:

Try it online!

History
By 1982, Nial had defined four infix functions to join two arrays, enclosing any combination of them. encloses neither argument, giving Catenate, while  encloses both, giving dyadic Pair. encloses only the left to give Link, and  encloses the right.

In APL, Link precedes Pair significantly, as it was defined in SHARP APL in 1983, and included in the initial version of J in 1990.

In array languages based on the list model, Pair also covers the functionality of Promote and Laminate. K, released in the 1990s, defines monadic  as enlist, but dyadic   as catenate. Ambivalent Pair appears in I as  since 2012; no name is given in the documentation, but the implementation uses "itemize" (the same name as J's Promote) and "cross".

Pair was defined as  in Extended Dyalog APL in 2018, and then adopted into dzaima/APL. It was added to BQN with the glyph  in 2021.

Documentation

 * BQN (as )