Changes

Jump to navigation Jump to search

Scalar function

1,129 bytes added, 31 March
no edit summary
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>.
== User defined scalar functions ==
In dialects with the [[Over]] 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 [[derived monadic operator]] <source lang=apl inline>perv←⍥0</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:
<source lang=apl>
perv←{⍺←⊢ ⍝ Scalar pervasion
1=≡⍺ ⍵ ⍵:⍺ ⍺⍺ ⍵ ⍝ (⍺ and) ⍵ depth 0: operand fn application
⍺ ∇¨⍵ ⍝ (⍺ or) ⍵ deeper: recursive traversal.
}
</source>
== Standard scalar functions ==
|-
|}
== User defined scalar functions ==
In [[nested array model]] dialects with the [[Depth (operator)|Depth]] operator (<source lang=apl inline>⍥</source> or in J, ''Level at'' <source lang=j inline>L:</source> ), any function can be used as a scalar function (that is, be applied to all simple scalars) using the [[derived monadic operator]] <source lang=apl inline>perv←⍥0</source>:
 
[https://tio.run/##SyzI0U2pTMzJT9dNrShJzUtJTfn/qKPtUduE6kd9U4HUo56mlMzigke9u2ofdbcAxYJdgUR4sLprWWpeibqGenBqcXFmfl5AUSaQq6AO1KyuyfWoo70CqNk5PyVVoeJ/QWpRGcio3qUGXH75ecHJiTmJRW55YEt6t1qpA/UBzVZQT1OvRZZXAOlT0DBQMNRUMFTQeNTVZKhgoAl0XjsXyOBHvWv@AwA Try it online!]
<source lang=apl>
perv←⍥0
NonScalarFn←{⍵:'t' ⋄ 'f'}
NonScalarFn perv (0 1) 1 (⊂1 0)
┌──┬─┬────┐
│ft│t│┌──┐│
│ │ ││tf││
│ │ │└──┘│
└──┴─┴────┘
</source>
{{Works in|[[dzaima/APL]], [[Extended Dyalog APL]]}}
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 ==

Navigation menu