Pair: Difference between revisions
(Rearrange; include name "Half Pair") |
(→History: Link in SHARP and J, Enlist in K, Pair in I) |
||
Line 26: | Line 26: | ||
== History == | == History == | ||
[[Link]] precedes Pair significantly, as it was defined in [[SHARP APL]] in 1983,<ref>[https://www.jsoftware.com/papers/satn45.htm "Language Extensions of May 1983"]. SATN-45, 1983-05-02.</ref> and included in the initial version of [[J]] in 1990. | |||
Pair appeared first in array languages based on the [[list model]], where it also covers the functionality of [[Promote]] and [[Laminate]]. [[K]], released in the 1990s, defines monadic <code>,</code> as enlist, but dyadic <code>,</code> as [[catenate]]. Ambivalent Pair appears in [[I]] as <code>;</code> 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 <syntaxhighlight lang=apl inline>⍮</syntaxhighlight> in [[Extended Dyalog APL]] in 2018, and then adopted into [[dzaima/APL]]. It was added to [[BQN]] with the glyph <code>⋈</code> in 2021. | Pair was defined as <syntaxhighlight lang=apl inline>⍮</syntaxhighlight> in [[Extended Dyalog APL]] in 2018, and then adopted into [[dzaima/APL]]. It was added to [[BQN]] with the glyph <code>⋈</code> in 2021. |
Revision as of 16:40, 6 March 2024
⍮
|
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.[1] 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:
6 7 8(+⍮-)3 ┌───────┬─────┐ │9 10 11│3 4 5│ └───────┴─────┘
It can also be combined with Mix to increase rank rather than depth:
6 7 8(+↑⍤⍮-)3 9 10 11 3 4 5
History
Link precedes Pair significantly, as it was defined in SHARP APL in 1983,[2] and included in the initial version of J in 1990.
Pair appeared first in array languages based on the list model, where it 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
⋈
)
References
- ↑ "Composition and Enclosure" § Composition Operators. SATN-41, 1981-06-20.
- ↑ "Language Extensions of May 1983". SATN-45, 1983-05-02.