Scalar function: Difference between revisions

Jump to navigation Jump to search
561 bytes added ,  10:29, 4 May 2020
no edit summary
Miraheze>Adám Brudzewsky
m (Text replacement - "<code>" to "<source lang=apl inline>")
No edit summary
(20 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 <source lang=apl inline>~</code> with non-scalar dyad [[Without]], and similarly scalar [[Roll]] and non-scalar [[Deal]] are both written <source lang=apl inline>?</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
{|
| <source lang=apl inline>+</code> || [[Conjugate]]
|-
|-
| <source lang=apl inline>-</code> || [[Negate]]
| [[Conjugate]] || <source lang=apl inline>+</source> || [[Plus]]
|-
|-
| <source lang=apl inline>×</code> || [[Signum]] or Direction
| [[Negate]] || <source lang=apl inline>-</source> || [[Minus]]
|-
|-
| <source lang=apl inline>÷</code> || [[Reciprocal]]
| [[Signum]] or Direction || <source lang=apl inline>×</source> || [[Times]]
|-
|-
| <source lang=apl inline></code> || [[Floor]]
| [[Reciprocal]] || <source lang=apl inline>÷</source> || [[Divide]]
|-
|-
| <source lang=apl inline></code> || [[Ceiling]]
| [[Floor]] || <source lang=apl inline></source> || [[Minimum]]
|-
|-
| <source lang=apl inline>*</code> || [[Exponential]]
| [[Ceiling]] || <source lang=apl inline></source> || [[Maximum]]
|-
|-
| <source lang=apl inline></code> || [[Natural Logarithm]]
| [[Exponential]] || <source lang=apl inline>*</source> || [[Power function]]
|-
|-
| <source lang=apl inline><nowiki>|</nowiki></code> || [[Magnitude]]
| [[Natural Logarithm]] || <source lang=apl inline></source> || [[Logarithm]]
|-
|-
| <source lang=apl inline>!</code> || [[Factorial]]
| [[Magnitude]] or Absolute value || <source lang=apl inline>|</source> || [[Residue]]
|-
|-
| <source lang=apl inline>○</code> || [[Pi Times]]
| [[Pi Times]] || <source lang=apl inline>○</source> || [[Circle function]]
|-
|-
| <source lang=apl inline>~</code> || [[Not]]
| [[Factorial]] || <source lang=apl inline>!</source> || [[Binomial]] coefficient or combination function
|-
|-
| <source lang=apl inline>∊</code> || [[Type]]
| [[Roll]] || <source lang=apl inline>?</source> ||
|}
 
=== Dyadic functions ===
 
{|
| <source lang=apl inline>+</code> || [[Plus]]
|-
|-
| <source lang=apl inline>-</code> || [[Minus]]
| [[Not]] || <source lang=apl inline>~</source> ||
|-
|-
| <source lang=apl inline>×</code> || [[Times]]
| || <source lang=apl inline></source> || [[Logical And]]
|-
|-
| <source lang=apl inline>÷</code> || [[Divide]]
| || <source lang=apl inline></source> || [[Logical Or]]
|-
|-
| <source lang=apl inline></code> || [[Minimum]]
| || <source lang=apl inline></source> || [[Nand]]
|-
|-
| <source lang=apl inline></code> || [[Maximum]]
| || <source lang=apl inline></source> || [[Nor]]
|-
|-
| <source lang=apl inline>*</code> || [[Power function]]
| || <source lang=apl inline><</source> || [[Less than]]
|-
|-
| <source lang=apl inline></code> || [[Logarithm]]
| || <source lang=apl inline></source> || [[Less than or equal to]]
|-
|-
| <source lang=apl inline><nowiki>|</nowiki></code> || [[Residue]]
| || <source lang=apl inline>=</source> || [[Equal to]]
|-
|-
| <source lang=apl inline>!</code> || [[Binomial]] coefficient or combination function
| || <source lang=apl inline></source> || [[Greater than or equal to]]
|-
|-
| <source lang=apl inline></code> || [[Circle function]]
| || <source lang=apl inline>></source> || [[Greater than]]
|-
|-
| <source lang=apl inline></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
|-
|-
| <source lang=apl inline></code> || [[Logical Or]]
| [[Square Root]] || <source lang=apl inline></source> || [[Nth Root]]
|-
|-
| <source lang=apl inline></code> || [[Nand]]
| [[Type]] || <source lang=apl inline>∊</source> or <source lang=apl inline></source> ||
|-
|-
| <source lang=apl inline></code> || [[Nor]]
| || <source lang=apl inline></source> || [[Lowest Common Multiple]] (LCM)
|-
|-
| <source lang=apl inline><</code> || [[Less than]]
| || <source lang=apl inline></source> || [[Greatest Common Divisor]] (GCD)
|-
|-
| <source lang=apl inline>≤</code> || [[Less than or equal to]]
|-
| <source lang=apl inline>=</code> || [[Equal to]]
|-
| <source lang=apl inline>≥</code> || [[Greater than or equal to]]
|-
| <source lang=apl inline>></code> || [[Greather than]]
|-
| <source lang=apl inline>≠</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