Primitive function

From APL Wiki
Jump to navigation Jump to search

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).

Other parts of APL which are written with a single glyph include primitive operators and Quad.

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 [edit]
Primitive functions
Monadic ConjugateNegateSignumNotRollType
Dyadic AddSubtractEqual to (Xnor) ∙ Not Equal to (Xor) ∙ MinimumMaximumComparison functions
Structural ShapeReshapeTallyDepthRavelReverseRazeMixCut (K)PairReplicatePartitioned Enclose
Selection TakeDropUniqueIdentitySelect
Selector Interval IndexIndices
Computational MatchNot MatchNub SieveFormatExecute
Primitive operators EachReverse ComposeReplicate
Quad names
Arrays Index originMigration level
Other ZildeHigh minusFunction axis