Index Generator

From NARS2000
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Z←⍳R returns a vector of consecutive ascending integers.
R is a negative integer scalar or one-element vector.
Z is an integer vector of length |R whose values range from ⎕IO+R to ⎕IO-1.
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 origin-0

      ⍳3
0 1 2

      ⍳¯3
¯3 ¯2 ¯1

and in origin-1

      ⍳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)).


Z←⍳R returns an array of integer indices suitable for indexing all the elements of an array of shape |R.
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)⍴⎕IO-1.
This feature extends monadic iota to multi-element 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 origin-0

      ⍳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 origin-1

      ⍳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
    ∇