From J Wiki
Jump to: navigation, search

>> <<   Down to: Dyad   Back to: Vocabulary Thru to: Dictionary

u;.0 y Reversed Adverb

Rank Infinity -- operates on x and y as a whole -- WHY IS THIS IMPORTANT?

u;.0 y reverses y along all its axes, and then applies the verb u to the reversed y.

If y is a list, u;.0 y is the same as u |. y .

Common uses

1. Apply u to the reversal of y:

   isinstring =: +./@:E.  NB. 1 if x is found in y
   'ode'&isinstring 'boustrophedonic'
   'ode'&isinstring;.0 'boustrophedonic'

Related Primitives

Reverse (|. y)

x u;.0 y Subarray Adverb

Rank 2 _ -- operates on tables of x and the entirety of y -- WHY IS THIS IMPORTANT?

In x u;.0 y, x describes a subarray of y. The subarray is extracted from y, and then verb u is applied to it.

In these examples u is ], which simply passes the selected subarray unchanged.

   ]a =. a. {~ (a. i. 'a') + i. 4 4   NB. A 4x4 array
   (0 0 ,: 2 2) ];.0 a                NB. starting at 0 0, take a subarray of shape 2 2
   (1 2 ,: 3 2) ];.0 a                NB. Starting at 1 2, take a subarray of shape 3 2

Argument x is a table with two rows. Each column of x gives the selection for the corresponding axis of y. The first number in each column gives the starting position, and the second number gives the number of items selected.

Looking at it another way, the first row of x is the index list of the starting corner of the subarray, and the second item gives the shape of the subarray.

Common uses

1. Use  x ];.0 y to extract a subarray. It is the fastest way to do it.

2. The substr function, which extracts a substring from a string, can be coded using  x ];.0 y

   substr =: (];.0~ ,.)~"1   NB. x is (start,len), y is string to take from
   2 4 substr 'boustrophedonic'

3. If you want to apply a verb to the subarray, use that verb as u

   (0 0 ,: 2 2) ,;.0 a       NB. Select subarray, then enfile into a list


1. If the length causes the subarray to extend past the end of the array, the subarray is truncated at the end of the array.

   (1 2 ,: 2 8) ];.0 a

2. A length of infinity (_ or __) means "to the end of the array".

   (2 ,: _) ];.0 'abcdefgh'


3. If x is an atom or a list, it calls for a subarray whose shape is ,x, starting at the beginning of the array. In other words, x is treated as the second row of the left argument, and the first row is taken to be 0.

   2 3 ];.0 a

4. If x has fewer columns than the rank of y, trailing columns of 0 _ are added, which take the omitted axes in their entirety

   (2,:2) ];.0 a

5. If a starting position is negative, it indicates a position relative to the end of that axis, and is used as the ending position of the selection

Note: even though the selected region runs backwards from the start position, the selection retains its normal order

   (2 _1 ,: 2 2) ];.0 a

6. If a length is negative, that axis is reversed after the selection.

   (2 _1 ,: 2 _2) ];.0 a  NB. Axis 1 reversed

7. The starting position must be a valid atom of the array, except that the starting position of an axis may be just one higher than the end of the array provided that the corresponding length is 0.

8. The subarray of y always has the same rank as y.


1. ];.0 y treats an x that is a table with one row by transposing it (as in |: x) before using it.

2. Empty x produces unpredictable results.

Use These Combinations

Combinations using x ;.0 y that have exceptionally good performance include:

What it does Type;


Syntax Variants;



Bug Warnings

Extract multiple substrings into a list Boolean list, byte list x ;@:(<;.0) y or [: ; <;.0 avoids boxing, avoids creating subarrays
Extract substring/subarray table or list x ];.0 y or [;.0 avoids creating indexes