4,577
edits
Miraheze>Marshall (Created page with "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...") |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
(28 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
A scalar function is one of a class of primitive | A '''scalar function''' is one of a class of [[primitive function]]s that apply to [[argument]]s 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 model|nested]] array languages, scalar functions [[pervasion|pervade]] any [[nested array]]s by [[recursion|recursively]] descending into them until reaching [[simple scalars]]; in [[Flat array model|flat]] array languages they usually do not apply inside [[boxes]]. Functions which are not scalar, are called [[mixed function]]s. | ||
Only a particular [[valence]] of a function is labelled "scalar". The scalar monad [[Not]] usually shares the glyph < | Only a particular [[valence]] of a function is labelled "scalar". The scalar monad [[Not]] usually shares the glyph <syntaxhighlight lang=apl inline>~</syntaxhighlight> with non-scalar dyad [[Without]], and similarly scalar [[Roll]] and non-scalar [[Deal]] are both written <syntaxhighlight lang=apl inline>?</syntaxhighlight>. | ||
== Standard scalar functions == | == Standard scalar functions == | ||
Line 7: | Line 7: | ||
Most APLs use a set of scalar functions that was worked out fairly early in APL's development. These are listed in this section. | Most APLs use a set of scalar functions that was worked out fairly early in APL's development. These are listed in this section. | ||
{| class=wikitable | |||
! Monadic function !! Glyph !! Dyadic function | |||
{| | |||
|- | |- | ||
| < | | [[Conjugate]] || <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Plus]] | ||
|- | |- | ||
| < | | [[Negate]] || <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Minus]] | ||
|- | |- | ||
| < | | [[Signum]] or Direction || <syntaxhighlight lang=apl inline>×</syntaxhighlight> || [[Times]] | ||
|- | |- | ||
| < | | [[Reciprocal]] || <syntaxhighlight lang=apl inline>÷</syntaxhighlight> || [[Divide]] | ||
|- | |- | ||
| < | | [[Floor]] || <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || [[Minimum]] | ||
|- | |- | ||
| < | | [[Ceiling]] || <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> || [[Maximum]] | ||
|- | |- | ||
| < | | [[Exponential]] || <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Power function]] | ||
|- | |- | ||
| | | [[Natural Logarithm]] || <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> || [[Logarithm]] | ||
|- | |- | ||
| < | | [[Magnitude]] or Absolute value || <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Residue]] | ||
|- | |- | ||
| < | | [[Pi Times]] || <syntaxhighlight lang=apl inline>○</syntaxhighlight> || [[Circle function]] | ||
|- | |- | ||
| < | | [[Factorial]] || <syntaxhighlight lang=apl inline>!</syntaxhighlight> || [[Binomial]] coefficient or combination function | ||
|- | |- | ||
| [[Roll]] || <syntaxhighlight lang=apl inline>?</syntaxhighlight> || | |||
| | |||
| < | |||
|- | |- | ||
| < | | [[Not]] || <syntaxhighlight lang=apl inline>~</syntaxhighlight> || | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>∧</syntaxhighlight> || [[Logical And]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>∨</syntaxhighlight> || [[Logical Or]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>⍲</syntaxhighlight> || [[Nand]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>⍱</syntaxhighlight> || [[Nor]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline><</syntaxhighlight> || [[Less than]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>≤</syntaxhighlight> || [[Less than or equal to]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>=</syntaxhighlight> || [[Equal to]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>≥</syntaxhighlight> || [[Greater than or equal to]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>></syntaxhighlight> || [[Greater than]] | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>≠</syntaxhighlight> || [[Not equal to]] | ||
|} | |||
== Additional scalar functions == | |||
Very few additional scalar functions have been added later in various dialects: | |||
{| class=wikitable | |||
! Monadic function !! Glyph !! Dyadic function | |||
|- | |- | ||
| < | | [[Square Root]] || <syntaxhighlight lang=apl inline>√</syntaxhighlight> || [[Nth Root]] | ||
|- | |- | ||
| < | | [[Type]] || <syntaxhighlight lang=apl inline>∊</syntaxhighlight> or <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> || | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>∧</syntaxhighlight> || [[Lowest Common Multiple]] (LCM) | ||
|- | |- | ||
| < | | || <syntaxhighlight lang=apl inline>∨</syntaxhighlight> || [[Greatest Common Divisor]] (GCD) | ||
|- | |- | ||
| [[Case fold]] || <syntaxhighlight lang=apl inline>⎕C</syntaxhighlight> || [[Case map]] | |||
| | |||
| < | |||
|- | |- | ||
|} | |} | ||
== External links == | |||
* [https://www.sacrideo.us/apl-a-day-7-scalar-functions/ Scalar Functions] (part of [https://www.sacrideo.us/tag/apl-a-day/ APL a Day]) | |||
* [https://forums.dyalog.com/viewtopic.php?f=30&t=1621 Scalar functions] by [[Roger Hui]] | |||
* [https://help.dyalog.com/latest/#Language/Primitive%20Functions/Scalar%20Functions.htm Scalar Functions] in [[Dyalog APL]] documentation | |||
{{APL features}}[[Category:Kinds of functions]][[Category:Scalar functions| ]] |