Index Generator


R is a negative integer scalar or oneelement vector.  
Z is an integer vector of length R whose values range from ⎕IO+R to ⎕IO1.  
This feature extends monadic iota to negative arguments.  
This function is sensitive to ⎕IO and ⎕FEATURE. In particular, ⎕FEATURE[⎕IO] must be 1 in order for negative values in R to be accepted; otherwise a DOMAIN ERROR is signalled. 
For example, in origin0
⍳3
0 1 2
⍳¯3
¯3 ¯2 ¯1
and in origin1
⍳3
1 2 3
⍳¯3
¯2 ¯1 0
This function is used to create Arithmetic Progression Arrays (APAs). For example, 2 3 4⍴⍳24 has a very compact storage consisting of the array shape (2 3 4), the starting offset (⎕IO) and multiplier (1), plus the normal array overhead (which includes the number of elements (24)).


R is an integer vector of length > 1.  
Z is a nested array of shape R whose items are each integer vectors of length ⍴⍴R and whose values range from ⎕IO+R to (⍴R)⍴⎕IO1.  
This feature extends monadic iota to multielement vector arguments.  
This function is sensitive to ⎕IO and ⎕FEATURE. In particular, ⎕FEATURE[⎕IO] must be 1 in order for negative values in R to be accepted; otherwise a DOMAIN ERROR is signalled. 
For example, in origin0
⍳2 3
0 0 0 1 0 2
1 0 1 1 1 2
⍳2 ¯3
0 ¯3 0 ¯2 0 ¯1
1 ¯3 1 ¯2 1 ¯1
and in origin1
⍳2 3
1 1 1 2 1 3
2 1 2 2 2 3
⍳2 ¯3
1 ¯2 1 ¯1 1 0
2 ¯2 2 ¯1 2 0
For example, taking into account both of the above extensions, A, A[⍳⍴A], A[⍳⍴A], and even A[⍳¯1 1[?(⍴⍴A)⍴2]×⍴A] are all identical for any array A in either origin.
This last extension is implemented via an internal magic function due to Carl M. Cheney:
∇ Z←#MonIota V
[1] Z←⊃∘.,/⍳¨V
∇