⍝ Scalar pervasion:
1(2 3),perv(4 5)6
┌─────────┬─────────┐
│┌───┬───┐│┌───┬───┐│
││1 4│1 5│││2 6│3 6││
│└───┴───┘│└───┴───┘│
└─────────┴─────────┘
⍝ 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.
}
p←(⊂1 2)(3 4)
q←(5 6)(⊂7 8)
⍕disp¨p q
┌─────┬───┐ ┌───┬─────┐
│┌───┐│3 4│ │5 6│┌───┐│
││1 2││ │ │ ││7 8││
│└───┘│ │ │ │└───┘│
└─────┴───┘ └───┴─────┘
p,perv q
┌─────────────────────┬─────────────────────┐
│┌─────────┬─────────┐│┌─────────┬─────────┐│
││┌───┬───┐│┌───┬───┐│││┌───┬───┐│┌───┬───┐││
│││1 5│2 5│││1 6│2 6│││││3 7│3 8│││4 7│4 8│││
││└───┴───┘│└───┴───┘│││└───┴───┘│└───┴───┘││
│└─────────┴─────────┘│└─────────┴─────────┘│
└─────────────────────┴─────────────────────┘
p(,wwaw 0)q
┌─────────────────────┬─────────────────────┐
│┌─────────┬─────────┐│┌─────────┬─────────┐│
││┌───┬───┐│┌───┬───┐│││┌───┬───┐│┌───┬───┐││
│││1 5│2 5│││1 6│2 6│││││3 7│3 8│││4 7│4 8│││
││└───┴───┘│└───┴───┘│││└───┴───┘│└───┴───┘││
│└─────────┴─────────┘│└─────────┴─────────┘│
└─────────────────────┴─────────────────────┘
p(,wwaw 1)q
┌─────────┬─────────┐
│┌───────┐│┌───────┐│
││1 2 5 6│││3 4 7 8││
│└───────┘│└───────┘│
└─────────┴─────────┘
p(,wwaw 2)q
┌─────────┬─────────┐
│┌───┬─┬─┐│┌─┬─┬───┐│
││1 2│5│6│││3│4│7 8││
│└───┴─┴─┘│└─┴─┴───┘│
└─────────┴─────────┘
p(,wwaw 3)q
┌─────┬───┬───┬─────┐
│┌───┐│3 4│5 6│┌───┐│
││1 2││ │ ││7 8││
│└───┘│ │ │└───┘│
└─────┴───┴───┴─────┘
⍝∇ perv
Back to: code
Back to: Workspaces