A primitive function is a function defined by the language. Outside of the array community, such functions may be called "builtin" or "intrinsic" functions. In APL, each is represented with a single glyph; in other languages, such as those restricted to ASCII characters, they may use multiple characters ("bigraphs" and "trigraphs" are combinations of two and three characters, respectively).
Early APL implementations divided primitives into scalar functions, which apply one element at a time, and mixed functions, which do not. Modern APLs universally retain the terminology "scalar function" but may deemphasize its opposite "mixed function" or subdivide it further. Two prominent subcategories of functions are structural functions, which rearrange elements of the argument or its subarrays without regard to their values, and set functions, which return a result or manipulate arrays based on which cells or elements match other cells or elements.
A function is distinct from the glyph used to denote it. Different APLs, or even one APL (using migration level) might use the same glyph for multiple functions, or different glyphs for identical or similar functions. The term "function" can, depending on context, refer either to an ambivalent function which can be applied with one or two arguments, or the monadic or dyadic function obtained by restricting that function to either one or two arguments specifically.
|APL built-ins |
|Monadic||Conjugate ∙ Negate ∙ Signum ∙ Not ∙ Roll ∙ Type|
|Dyadic||Add ∙ Subtract ∙ Equal to (Xnor) ∙ Not Equal to (Xor) ∙ Minimum ∙ Maximum ∙ Comparison functions|
|Structural||Shape ∙ Reshape ∙ Tally ∙ Depth ∙ Ravel ∙ Reverse ∙ Raze ∙ Mix ∙ Cut (K) ∙ Pair ∙ Replicate ∙ Partitioned Enclose|
|Selection||Take ∙ Drop ∙ Unique ∙ Identity ∙ Select|
|Selector||Interval Index ∙ Indices|
|Computational||Match ∙ Not Match ∙ Nub Sieve ∙ Format ∙ Execute|
|Primitive operators||Monadic||Each ∙ Replicate|
|Arrays||Index origin ∙ Migration level|
|Other||Zilde ∙ High minus ∙ Function axis|