Scalar function

From APL Wiki
Revision as of 20:55, 10 September 2022 by Adám Brudzewsky (talk | contribs) (Text replacement - "<source" to "<syntaxhighlight")
Jump to navigation Jump to search

A scalar function is one of a class of primitive functions that apply to arguments one element at a time. Dyadic scalar functions pair elements of their arguments based on conformability rules, and thus are subject to scalar extension. In nested array languages, scalar functions pervade any nested arrays by recursively descending into them until reaching simple scalars; in flat array languages they usually do not apply inside boxes. Functions which are not scalar, are called mixed functions.

Only a particular valence of a function is labelled "scalar". The scalar monad Not usually shares the glyph <syntaxhighlight lang=apl inline>~</source> with non-scalar dyad Without, and similarly scalar Roll and non-scalar Deal are both written <syntaxhighlight lang=apl inline>?</source>.

Standard scalar functions

Most APLs use a set of scalar functions that was worked out fairly early in APL's development. These are listed in this section.

Monadic function Glyph Dyadic function
Conjugate <syntaxhighlight lang=apl inline>+</source> Plus
Negate <syntaxhighlight lang=apl inline>-</source> Minus
Signum or Direction <syntaxhighlight lang=apl inline>×</source> Times
Reciprocal <syntaxhighlight lang=apl inline>÷</source> Divide
Floor <syntaxhighlight lang=apl inline>⌊</source> Minimum
Ceiling <syntaxhighlight lang=apl inline>⌈</source> Maximum
Exponential <syntaxhighlight lang=apl inline>*</source> Power function
Natural Logarithm <syntaxhighlight lang=apl inline>⍟</source> Logarithm
Magnitude or Absolute value </source> Residue
Pi Times <syntaxhighlight lang=apl inline>○</source> Circle function
Factorial <syntaxhighlight lang=apl inline>!</source> Binomial coefficient or combination function
Roll <syntaxhighlight lang=apl inline>?</source>
Not <syntaxhighlight lang=apl inline>~</source>
<syntaxhighlight lang=apl inline>∧</source> Logical And
<syntaxhighlight lang=apl inline>∨</source> Logical Or
<syntaxhighlight lang=apl inline>⍲</source> Nand
<syntaxhighlight lang=apl inline>⍱</source> Nor
<syntaxhighlight lang=apl inline><</source> Less than
<syntaxhighlight lang=apl inline>≤</source> Less than or equal to
<syntaxhighlight lang=apl inline>=</source> Equal to
<syntaxhighlight lang=apl inline>≥</source> Greater than or equal to
<syntaxhighlight lang=apl inline>></source> Greater than
<syntaxhighlight lang=apl inline>≠</source> Not equal to

Additional scalar functions

Very few additional scalar functions have been added later in various dialects:

Monadic function Glyph Dyadic function
Square Root <syntaxhighlight lang=apl inline>√</source> Nth Root
Type <syntaxhighlight lang=apl inline>∊</source> or <syntaxhighlight lang=apl inline>⊤</source>
<syntaxhighlight lang=apl inline>∧</source> Lowest Common Multiple (LCM)
<syntaxhighlight lang=apl inline>∨</source> Greatest Common Divisor (GCD)
Case fold <syntaxhighlight lang=apl inline>⎕C</source> Case map

External links


APL features [edit]
Built-ins Primitives (functions, operators) ∙ Quad name
Array model ShapeRankDepthBoundIndex (Indexing) ∙ AxisRavelRavel orderElementScalarVectorMatrixSimple scalarSimple arrayNested arrayCellMajor cellSubarrayEmpty arrayPrototype
Data types Number (Boolean, Complex number) ∙ Character (String) ∙ BoxNamespaceFunction array
Concepts and paradigms Conformability (Scalar extension, Leading axis agreement) ∙ Scalar function (Pervasion) ∙ Identity elementComplex floorArray ordering (Total) ∙ Tacit programming (Function composition, Close composition) ∙ GlyphLeading axis theoryMajor cell searchFirst-class function
Errors LIMIT ERRORRANK ERRORSYNTAX ERRORDOMAIN ERRORLENGTH ERRORINDEX ERRORVALUE ERROREVOLUTION ERROR