----------
zip←{↓⍉↑⍵}          ⎕ml<2
----------
Suggested  by  Peter  Donnelly, [zip] takes an N-vector of M-vectors and returns
the transpose: M-vector of N-vectors. It is named after a functional programming
idiom, which returns a list-of-pairs from a pair-of-lists.

          zip'ABCDEFGHIJKLM' 'abcdefghijklm'                ⍝ zip vectors.
     Aa  Bb  Cc  Dd  Ee  Ff  Gg  Hh  Ii  Jj  Kk  Ll  Mm

          disp pairs
    ┌→───────────────────┬─────────────────────────┬───────────────────────┐
    │┌→────────┬────────┐│┌→──────────┬───────────┐│┌→──────────┬─────────┐│
    ││┌→──┬───┐│┌→──┬──┐│││┌→────┬───┐│┌→───┬────┐│││┌→───┬────┐│┌→──┬───┐││
    │││one│unu│││two│du│││││three│tri│││four│kvar│││││five│kvin│││six│ses│││
    ││└──→┴──→┘│└──→┴─→┘│││└────→┴──→┘│└───→┴───→┘│││└───→┴───→┘│└──→┴──→┘││
    │└────────→┴───────→┘│└──────────→┴──────────→┘│└──────────→┴────────→┘│
    └───────────────────→┴────────────────────────→┴──────────────────────→┘

          disp zip pairs
    ┌→──────────────────────────────────┬────────────────────────────────┐
    │┌→────────┬───────────┬───────────┐│┌→───────┬───────────┬─────────┐│
    ││┌→──┬───┐│┌→────┬───┐│┌→───┬────┐│││┌→──┬──┐│┌→───┬────┐│┌→──┬───┐││
    │││one│unu│││three│tri│││five│kvin│││││two│du│││four│kvar│││six│ses│││
    ││└──→┴──→┘│└────→┴──→┘│└───→┴───→┘│││└──→┴─→┘│└───→┴───→┘│└──→┴──→┘││
    │└────────→┴──────────→┴──────────→┘│└───────→┴──────────→┴────────→┘│
    └──────────────────────────────────→┴───────────────────────────────→┘

          disp zip¨pairs
    ┌→───────────────────┬─────────────────────────┬───────────────────────┐
    │┌→────────┬────────┐│┌→───────────┬──────────┐│┌→─────────┬──────────┐│
    ││┌→──┬───┐│┌→──┬──┐│││┌→────┬────┐│┌→──┬────┐│││┌→───┬───┐│┌→───┬───┐││
    │││one│two│││unu│du│││││three│four│││tri│kvar│││││five│six│││kvin│ses│││
    ││└──→┴──→┘│└──→┴─→┘│││└────→┴───→┘│└──→┴───→┘│││└───→┴──→┘│└───→┴──→┘││
    │└────────→┴───────→┘│└───────────→┴─────────→┘│└─────────→┴─────────→┘│
    └───────────────────→┴────────────────────────→┴──────────────────────→┘

          disp zip¨zip pairs
    ┌→────────────────────────────────┬──────────────────────────────┐
    │┌→───────────────┬──────────────┐│┌→─────────────┬─────────────┐│
    ││┌→──┬─────┬────┐│┌→──┬───┬────┐│││┌→──┬────┬───┐│┌→─┬────┬───┐││
    │││one│three│five│││unu│tri│kvin│││││two│four│six│││du│kvar│ses│││
    ││└──→┴────→┴───→┘│└──→┴──→┴───→┘│││└──→┴───→┴──→┘│└─→┴───→┴──→┘││
    │└───────────────→┴─────────────→┘│└─────────────→┴────────────→┘│
    └────────────────────────────────→┴─────────────────────────────→┘

          disp zip zip¨ pairs
    ┌→──────────────────────────────────┬────────────────────────────────┐
    │┌→────────┬────────────┬──────────┐│┌→───────┬──────────┬──────────┐│
    ││┌→──┬───┐│┌→────┬────┐│┌→───┬───┐│││┌→──┬──┐│┌→──┬────┐│┌→───┬───┐││
    │││one│two│││three│four│││five│six│││││unu│du│││tri│kvar│││kvin│ses│││
    ││└──→┴──→┘│└────→┴───→┘│└───→┴──→┘│││└──→┴─→┘│└──→┴───→┘│└───→┴──→┘││
    │└────────→┴───────────→┴─────────→┘│└───────→┴─────────→┴─────────→┘│
    └──────────────────────────────────→┴───────────────────────────────→┘

----------
cat←{↑,/⍵}          ⎕ml<2
----------
[cat] concatenates the items in a vector (or higher rank array). It differs from
enlist (∊), in that the concatenation occurs only at the top level of the array.

          disp pairs
    ┌→───────────────────┬─────────────────────────┬───────────────────────┐
    │┌→────────┬────────┐│┌→──────────┬───────────┐│┌→──────────┬─────────┐│
    ││┌→──┬───┐│┌→──┬──┐│││┌→────┬───┐│┌→───┬────┐│││┌→───┬────┐│┌→──┬───┐││
    │││one│unu│││two│du│││││three│tri│││four│kvar│││││five│kvin│││six│ses│││
    ││└──→┴──→┘│└──→┴─→┘│││└────→┴──→┘│└───→┴───→┘│││└───→┴───→┘│└──→┴──→┘││
    │└────────→┴───────→┘│└──────────→┴──────────→┘│└──────────→┴────────→┘│
    └───────────────────→┴────────────────────────→┴──────────────────────→┘

          disp cat pairs
    ┌→────────┬────────┬───────────┬───────────┬───────────┬─────────┐
    │┌→──┬───┐│┌→──┬──┐│┌→────┬───┐│┌→───┬────┐│┌→───┬────┐│┌→──┬───┐│
    ││one│unu│││two│du│││three│tri│││four│kvar│││five│kvin│││six│ses││
    │└──→┴──→┘│└──→┴─→┘│└────→┴──→┘│└───→┴───→┘│└───→┴───→┘│└──→┴──→┘│
    └────────→┴───────→┴──────────→┴──────────→┴──────────→┴────────→┘

          disp cat¨pairs
    ┌→───────────────┬─────────────────────┬───────────────────┐
    │┌→──┬───┬───┬──┐│┌→────┬───┬────┬────┐│┌→───┬────┬───┬───┐│
    ││one│unu│two│du│││three│tri│four│kvar│││five│kvin│six│ses││
    │└──→┴──→┴──→┴─→┘│└────→┴──→┴───→┴───→┘│└───→┴───→┴──→┴──→┘│
    └───────────────→┴────────────────────→┴──────────────────→┘

          disp cat cat pairs
    ┌→──┬───┬───┬──┬─────┬───┬────┬────┬────┬────┬───┬───┐
    │one│unu│two│du│three│tri│four│kvar│five│kvin│six│ses│
    └──→┴──→┴──→┴─→┴────→┴──→┴───→┴───→┴───→┴───→┴──→┴──→┘

------------
combinations
------------

          disp pairs
    ┌→───────────────────┬─────────────────────────┬───────────────────────┐
    │┌→────────┬────────┐│┌→──────────┬───────────┐│┌→──────────┬─────────┐│
    ││┌→──┬───┐│┌→──┬──┐│││┌→────┬───┐│┌→───┬────┐│││┌→───┬────┐│┌→──┬───┐││
    │││one│unu│││two│du│││││three│tri│││four│kvar│││││five│kvin│││six│ses│││
    ││└──→┴──→┘│└──→┴─→┘│││└────→┴──→┘│└───→┴───→┘│││└───→┴───→┘│└──→┴──→┘││
    │└────────→┴───────→┘│└──────────→┴──────────→┘│└──────────→┴────────→┘│
    └───────────────────→┴────────────────────────→┴──────────────────────→┘

          disp zip cat pairs
    ┌→────────────────────────────┬──────────────────────────┐
    │┌→──┬───┬─────┬────┬────┬───┐│┌→──┬──┬───┬────┬────┬───┐│
    ││one│two│three│four│five│six│││unu│du│tri│kvar│kvin│ses││
    │└──→┴──→┴────→┴───→┴───→┴──→┘│└──→┴─→┴──→┴───→┴───→┴──→┘│
    └────────────────────────────→┴─────────────────────────→┘

          disp cat¨zip zip¨pairs
    ┌→────────────────────────────┬──────────────────────────┐
    │┌→──┬───┬─────┬────┬────┬───┐│┌→──┬──┬───┬────┬────┬───┐│
    ││one│two│three│four│five│six│││unu│du│tri│kvar│kvin│ses││
    │└──→┴──→┴────→┴───→┴───→┴──→┘│└──→┴─→┴──→┴───→┴───→┴──→┘│
    └────────────────────────────→┴─────────────────────────→┘

Technical note:

Notice  that  [cat] applies _mix_ rather than _first_ to its reduction. This has
the advantage of allowing it to accommodate higher rank arrays.

          disp mat
    ┌→───────────┬────────────┬───────────┐
    ↓┌→──┬──────┐│┌→──┬──────┐│┌→──┬─────┐│
    ││red│pepper│││red│letter│││red│alert││
    │└──→┴─────→┘│└──→┴─────→┘│└──→┴────→┘│
    ├───────────→┼───────────→┼──────────→┤
    │┌→───┬────┐ │┌→───┬─────┐│┌→───┬───┐ │
    ││blue│moon│ ││blue│suede│││blue│sky│ │
    │└───→┴───→┘ │└───→┴────→┘│└───→┴──→┘ │
    └───────────→┴───────────→┴──────────→┘

          disp cat mat
    ┌→───┬──────┬────┬──────┬────┬─────┐
    ↓red │pepper│red │letter│red │alert│
    ├───→┼─────→┼───→┼─────→┼───→┼────→┤
    │blue│ moon │blue│suede │blue│ sky │
    └───→┴─────→┴───→┴─────→┴───→┴────→┘

          disp zip mat
    ┌→────────────┬──────────────┬───────────┐
    ↓ ┌→──┬────┐  │  ┌→──┬────┐  │┌→──┬────┐ │
    │ │red│blue│  │  │red│blue│  ││red│blue│ │
    │ └──→┴───→┘  │  └──→┴───→┘  │└──→┴───→┘ │
    ├────────────→┼─────────────→┼──────────→┤
    │┌→─────┬────┐│┌→─────┬─────┐│┌→────┬───┐│
    ││pepper│moon│││letter│suede│││alert│sky││
    │└─────→┴───→┘│└─────→┴────→┘│└────→┴──→┘│
    └────────────→┴─────────────→┴──────────→┘

Back to: contents