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]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare RootRound
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axisIdentity (Null, Ident)
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)Identity (Lev, Dex)
Quad names Index originComparison toleranceMigration levelAtomic vector