Scalar function: Difference between revisions

Jump to navigation Jump to search
1,774 bytes removed ,  10:29, 4 May 2020
no edit summary
(links to pervasion and recursion)
No edit summary
(3 intermediate revisions by 2 users not shown)
Line 72: Line 72:
|-
|-
|}
|}
== User defined scalar functions ==
In [[nested array model]] dialects with the [[Depth (operator)|Depth]] operator (<source lang=apl inline>⍥</source>), any function can be used as a scalar function (that is, be applied to all simple scalars) using the <source lang=apl inline>perv←⍥0</source>:
[https://tio.run/##SyzI0U2pTMzJT9dNrShJzUtJTfn/qKPtUduE6kd9U4HUo56mlMzigke9u2ofdbcAxYJdgUR4sLprWWpeibqGenBqcXFmfl5AUSaQq6AO1KyuyfWoo70CqNk5PyVVoeK/X35ecHJiTmKRWx7Y4N6tVupAtUDzFNTT1Gu5NJAV9C410FTQMFAw1FQwVNB41NVkqGCgCXRTOxfItEe9a/4DAA Try it online!]
<source lang=apl>
      NonScalarFn←{⍵:'t' ⋄ 'f'}
      (NonScalarFn⍥0) (0 1) 1 (⊂1 0)
┌──┬─┬────┐
│ft│t│┌──┐│
│  │ ││tf││
│  │ │└──┘│
└──┴─┴────┘
</source>
{{Works in|[[Extended Dyalog APL]], [[dzaima/APL]] since 2020-03-01}}
In [[dzaima/APL]] the [[dyadic]] form of Depth is not yet implemented, so this definition will only work for monadic <source lang=apl inline>NonScalarFn</source>.
In dialects that support [[dfn]]s, this operator can be defined<ref>[[John Scholes]], [https://dfns.dyalog.com/n_perv.htm perv] (Scalar pervasion). dfns workspace, 2019-02-17.</ref> as:
<!-- [https://tio.run/##VZGxTsMwEIb3PMVtlwygZo3EVJURIWVAjFbsQKTItpwQFaEuCCUhKKgLIwOwMLB26cij@EXSc6IIasn23e@77@wz0/kJv2e5uhlsW9t6@2Bf32jjWaFtv7fdFzoTSV1eI09lgRv78kRuvKLlKsZVJWSJPsaiKDIlL01GLiDRMPBs26yJtlRcwHrQwlRjCQLXW9t9wvGw/TvECcuZARfKHM9zB@GZff6gLIrYuRlN9n6W5mTfCUzyYFS50OUtLCJQRCMVUglM6zxLWDmT/9UmVNv8fs@8P6AyM08QKAIjkjtTZJWA0rBKmILlp97Gu1Byuvy5nB65i5A6Qd0CTPHofHwe@AsIAwipSPcYwiKgH2g81yrb/wwH Try it online!] -->
<source lang=apl>
perv←{⍺←⊢              ⍝ Scalar pervasion
    1=≡⍺ ⍵ ⍵:⍺ ⍺⍺ ⍵    ⍝ (⍺ and) ⍵ depth 0: operand fn application
            ⍺ ∇¨⍵      ⍝ (⍺ or) ⍵ deeper: recursive traversal.
}
</source>
{{Works in|[[Dyalog APL]]}}
== External links ==
== 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://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}}
{{APL features}}[[Category:Kinds of functions]][[Category:Scalar functions| ]]

Navigation menu