Take R←X↑Y

Y may be any array. X must be a simple integer scalar or vector.

If Y is a scalar, it is treated as a one-element array of shape (⍴,X)⍴1. The length of X must be the same as or less than the rank of Y. If the length of X is less than the rank of Y, the missing elements of X default to the length of the corresponding axis of Y.

R is an array of the same rank as Y (after possible extension), and of shape |X. If X[I] (an element of X) is positive, then X[I] sub-arrays are taken from the beginning of the Ith axis of Y. If X[I] is negative, then X[I] sub-arrays are taken from the end of the Ith axis of Y.

If more elements are taken than exist on axis I, the extra positions in R are filled with the fill element of Y (⊂∊⊃Y with ⎕ml←0).

Examples

      5'ABCDEF'
ABCDE

      51 2 3
1 2 3 0 0

      ¯51 2 3
0 0 1 2 3

      5(3) (4) (5)
 1 2 3  1 2 3 4  1 2 3 4 5  0 0 0  0 0 0
      M
1 2 3 4
5 6 7 8

      2 3M
1 2 3
5 6 7

      ¯1 ¯2M
7 8
      M32 3 4⎕A
      1M3
ABCD
EFGH
IJKL
      ¯1M3
MNOP
QRST
UVWX