rslt ← {lft} (fun ##.perv) rgt ⍝ Scalar pervasion.
The function operand is applied between (or to in the monadic case) correspond-
ing simple scalars in its argument(s).
Technical note:
[perv] is closely related to the dyadic form of operator →saw← (simple-array-
wise). The only difference is that [perv] applies its function operand between
(or to) depth-0 arrays and →saw←, between depth-(0 or 1) arrays.
We could parameterize the maximum depth at which the function is applied by
passing it as a right operand:
wwaw←{ ⍝ Function operand applied ⍵⍵-Array-Wise.
⍵⍵≥¯1+|≡⍺ ⍵:⍺ ⍺⍺ ⍵ ⍝ Both shallow enough: apply operand.
⍵⍵≥|≡⍵:∇∘⍵¨⍺ ⍝ ⍵ shallow: traverse ⍺.
⍵⍵≥|≡⍺:⍺∘∇¨⍵ ⍝ ⍺ shallow: traverse ⍵.
⍺ ∇¨⍵ ⍝ Both deep: traverse both.
}
Remember that in Dyalog, vector strands bind tighter than operands. This means
that it may be necessary to separate the right operand from the argument:
aaa (, wwaw 0) bbb ⍝ operand 0 separated from argument bbb.
aaa , wwaw 0 ⌽ bbb ⍝ parentheses unnecessary in this case.
Example:
1(2 3) ,perv (4 5)6 ⍝ pervasive join
┌─────────┬─────────┐
│┌───┬───┐│┌───┬───┐│
││1 4│1 5│││2 6│3 6││
│└───┴───┘│└───┴───┘│
└─────────┴─────────┘
{⍵ ⍵}perv 1(2 3) ⍝ pervasive "dup"
┌───┬─────────┐
│1 1│┌───┬───┐│
│ ││2 2│3 3││
│ │└───┴───┘│
└───┴─────────┘
See also: saw rows Depth truth_tables
Back to: contents
Back to: Workspaces