|
|
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 == |
|
| |
|