Indexing

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[L],    R[L]←A,    and    R[L]f←A are all extended to allow both Reach and Scatter indexing.
L is a nested array of integer scalars and/or vectors, suitable for indexing R.
R is an arbitrary array.
A is an arbitrary array.
f is an arbitrary function.
Reach Indexing:   If L⊃R is valid, it is equivalent to ⊃R[⊂L], and
if L⊃¨⊂R is valid, it is equivalent to R[L]
Scatter Indexing:   If L⌷R is valid, it is equivalent to R[⊃∘.,/L], and
if L⌷¨⊂R is valid, it is equivalent to ⊂¨R[⊂¨L]
Both Reach and Scatter indexing may appear together within a single instance of R[L],    R[L]←A,    and    R[L]f←A
These functions are sensitive to ⎕IO.


For example, in origin-1

      V←'123'(⊂4 5)
      V[1 (2 ⍬ 1)]
 123 4
      M←2 2⍴(10 20) (30 40 'abc') 50 60
      M[(1 1)((1 2) 3)]
 10 20  abc
Z←R[L],    R[L]←A,    R[L]f←A,    L⌷[X] R,    L⍉R,    and    L⊃R are all extended to allow negative values in L.
For all but transpose, L is a nested array of integer scalars and/or vectors, suitable for indexing R; for transpose, L is an integer scalar or vector of integers, suitable for transposing R.
That is, if the largest allowed value for L is N, then the previous allowable range of values was ⎕IO to N, inclusive. Now, the allowable range of values is 1 ¯1[1]-N to N, inclusive. For example,    A,    A[⍳⍴A],    A[⍳-⍴A],    and even    A[⍳¯1 1[?(⍴⍴A)⍴2]×⍴A]    are all identical for any array A in either origin.
Also,    A,    (⍳⍴⍴A)⍉A,    and    (⍳-⍴⍴A)⍉A    are all identical for any array A in either origin.
R is an arbitrary array.
A is an arbitrary array.
These functions are sensitive to ⎕IO. Negative indexing is available only when the first element of ⎕FEATURE is set to 1.


For example, in origin-1

      ⎕FEATURE[1]←1
      V←'123'(⊂4 5)
      V[¯1 (0 ⍬ ¯1)]
 123 4