⍝ Vector of functions:
1 2 3 4 {''} vof + vof ! vof ? vof | 5 6 7 8 ⍝ vector vector
┌─┬──┬─────┬─┐
│6│15│1 6 4│0│
└─┴──┴─────┴─┘
4 {''} vof + vof ! vof ? vof | 5 6 7 8 ⍝ scalar vector
┌─┬──┬───────┬─┐
│9│15│4 2 1 5│0│
└─┴──┴───────┴─┘
1 2 3 4 {''} vof + vof ! vof ? vof | 5 ⍝ vector scalar
┌─┬──┬─────┬─┐
│6│10│4 5 2│1│
└─┴──┴─────┴─┘
4 {''} vof + vof ! vof ? vof | 5 ⍝ scalar scalar
┌─┬─┬───────┬─┐
│9│5│3 5 1 4│1│
└─┴─┴───────┴─┘
{''} vof + vof ! vof ? vof | 5 6 7 8 ⍝ monadic vector
5 720 1 8
{''} vof + vof ! vof ? vof | 5 ⍝ monadic scalar
5 120 2 5
1 disp {2⍴⍵} vof {3⍴⍵} vof {4⍴⍵} 2 3 4 ⍝ without left closure
┌→┬─┬─────┬───────┐
│2│2│3 3 3│4 4 4 4│
└─┴─┴~───→┴~─────→┘
1 disp {⍬} vof {2⍴⍵} vof {3⍴⍵} vof {4⍴⍵} 2 3 4 ⍝ explicit left closure
┌→──┬─────┬───────┐
│2 2│3 3 3│4 4 4 4│
└~─→┴~───→┴~─────→┘
_vof←{ ⍝ Close vector of functions.
⍺←⊂ ⍝ ⍺ elided: ⊂⍵.
(al ar)(wl wr)←⍺ ⍵ ⍝ distrubute arg(s).
1≡⍺ 1:(⍺⍺ wl)(⍵⍵ wr) ⍝ mondadic.
(al ⍺⍺ wl)(ar ⍵⍵ wr) ⍝ dyadic.
}
1 disp {2⍴⍵} _vof {3⍴⍵} vof {4⍴⍵} 2 3 4 ⍝ closure using <_vof>
┌→──┬─────┬───────┐
│2 2│3 3 3│4 4 4 4│
└~─→┴~───→┴~─────→┘
⍝∇ vof
Back to: code
Back to: Workspaces