Scalar function: Difference between revisions

Jump to navigation Jump to search
1,298 bytes added ,  22:25, 10 September 2022
m
Text replacement - "</source>" to "</syntaxhighlight>"
Miraheze>Adám Brudzewsky
No edit summary
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
(24 intermediate revisions by 5 users not shown)
Line 1: Line 1:
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 model|nested]] array languages scalar functions recursively descend into nested arrays until they can be applied to [[simple scalars]]; in [[Flat array model|flat]] array languages they usually do not apply inside [[boxes]].
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 <source lang=apl inline>~</source> with non-scalar dyad [[Without]], and similarly scalar [[Roll]] and non-scalar [[Deal]] are both written <source lang=apl inline>?</source>.
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.


=== Monadic functions ===
{| class=wikitable
 
! Monadic function !! Glyph !! Dyadic function
{|
| <source lang=apl inline>+</source> || [[Conjugate]]
|-
|-
| <source lang=apl inline>-</source> || [[Negate]]
| [[Conjugate]] || <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Plus]]
|-
|-
| <source lang=apl inline>×</source> || [[Signum]] or Direction
| [[Negate]] || <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Minus]]
|-
|-
| <source lang=apl inline>÷</source> || [[Reciprocal]]
| [[Signum]] or Direction || <syntaxhighlight lang=apl inline>×</syntaxhighlight> || [[Times]]
|-
|-
| <source lang=apl inline></source> || [[Floor]]
| [[Reciprocal]] || <syntaxhighlight lang=apl inline>÷</syntaxhighlight> || [[Divide]]
|-
|-
| <source lang=apl inline></source> || [[Ceiling]]
| [[Floor]] || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Minimum]]
|-
|-
| <source lang=apl inline>*</source> || [[Exponential]]
| [[Ceiling]] || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Maximum]]
|-
|-
| <source lang=apl inline></source> || [[Natural Logarithm]]
| [[Exponential]] || <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Power function]]
|-
|-
| <source lang=apl inline><nowiki>|</nowiki></source> || [[Magnitude]]
| [[Natural Logarithm]] || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Logarithm]]
|-
|-
| <source lang=apl inline>!</source> || [[Factorial]]
| [[Magnitude]] or Absolute value || <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Residue]]
|-
|-
| <source lang=apl inline>○</source> || [[Pi Times]]
| [[Pi Times]] || <syntaxhighlight lang=apl inline>○</syntaxhighlight> || [[Circle function]]
|-
|-
| <source lang=apl inline>~</source> || [[Not]]
| [[Factorial]] || <syntaxhighlight lang=apl inline>!</syntaxhighlight> || [[Binomial]] coefficient or combination function
|-
|-
| <source lang=apl inline>∊</source> || [[Type]]
| [[Roll]] || <syntaxhighlight lang=apl inline>?</syntaxhighlight> ||
|}
 
=== Dyadic functions ===
 
{|
| <source lang=apl inline>+</source> || [[Plus]]
|-
|-
| <source lang=apl inline>-</source> || [[Minus]]
| [[Not]] || <syntaxhighlight lang=apl inline>~</syntaxhighlight> ||
|-
|-
| <source lang=apl inline>×</source> || [[Times]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Logical And]]
|-
|-
| <source lang=apl inline>÷</source> || [[Divide]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Logical Or]]
|-
|-
| <source lang=apl inline></source> || [[Minimum]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Nand]]
|-
|-
| <source lang=apl inline></source> || [[Maximum]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Nor]]
|-
|-
| <source lang=apl inline>*</source> || [[Power function]]
| || <syntaxhighlight lang=apl inline><</syntaxhighlight> || [[Less than]]
|-
|-
| <source lang=apl inline></source> || [[Logarithm]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Less than or equal to]]
|-
|-
| <source lang=apl inline><nowiki>|</nowiki></source> || [[Residue]]
| || <syntaxhighlight lang=apl inline>=</syntaxhighlight> || [[Equal to]]
|-
|-
| <source lang=apl inline>!</source> || [[Binomial]] coefficient or combination function
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Greater than or equal to]]
|-
|-
| <source lang=apl inline></source> || [[Circle function]]
| || <syntaxhighlight lang=apl inline>></syntaxhighlight> || [[Greater than]]
|-
|-
| <source lang=apl inline></source> || [[Logical And]]
| || <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
|-
|-
| <source lang=apl inline></source> || [[Logical Or]]
| [[Square Root]] || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Nth Root]]
|-
|-
| <source lang=apl inline></source> || [[Nand]]
| [[Type]] || <syntaxhighlight lang=apl inline></syntaxhighlight> or <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> ||
|-
|-
| <source lang=apl inline></source> || [[Nor]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Lowest Common Multiple]] (LCM)
|-
|-
| <source lang=apl inline><</source> || [[Less than]]
| || <syntaxhighlight lang=apl inline></syntaxhighlight> || [[Greatest Common Divisor]] (GCD)
|-
|-
| <source lang=apl inline>≤</source> || [[Less than or equal to]]
| [[Case fold]] || <syntaxhighlight lang=apl inline>⎕C</syntaxhighlight> || [[Case map]]
|-
 
| <source lang=apl inline>=</source> || [[Equal to]]
|-
| <source lang=apl inline></source> || [[Greater than or equal to]]
|-
| <source lang=apl inline>></source> || [[Greather than]]
|-
|-
| <source lang=apl inline>≠</source> || [[Not equal to]]
|}
|}


{{APL programming language}}
== 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| ]]

Navigation menu