Scalar function: Difference between revisions

Jump to navigation Jump to search
1,209 bytes added ,  10:29, 4 May 2020
no edit summary
Miraheze>Marshall
No edit summary
(21 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]].


Only a particular [[valence]] of a function is labelled "scalar". The scalar monad [[Not]] usually shares the glyph <code>~</code> with non-scalar dyad [[Without]], and similarly scalar [[Roll]] and non-scalar [[Deal]] are both written <code>?</code>.
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>.


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

Navigation menu