=≤<>≥≡≢
Contents
=≤<>≥≡≢#
Comparisons =≤<>≥≡≢#
= is comparison (not assignment!) and penetrates all structures, giving a single Boolean (0 or 1) per leaf element. ≠ is the negation of that.
≤<>≥ work as you’d expect, again penetrating all structure.
A≡B is match. It compares the entire arrays A and B in all respects, even the invisible prototype:
''≡⍬ ⍝ does the empty char vector match the empty numeric vector?
0
A≢B is not match, the negation of A≡B.
Depth, tally ≡≢#
Monadic ≡B gives the depth of B, which is the amount of nesting. A simple scalar is 0, a vector is 1, a vector of vectors is 2, etc. If the amount of nesting is uneven throughout the array, the result will be negative, and indicate the maximum depth.
≢B is the tally of B, i.e. how many major cells B has. For a scalar, that’s 1. For a vector, it is the number of elements, for a matrix it is the number of rows, for a 3D array it is the number of layers, and so on.
≡(1 2 (3 4 5 (6 7 8))) ⍝ unevenly nested vector
≢1 ⍝ scalars tally to 1
≢3 2⍴⍳6 ⍝ matrix tally is the number of rows
¯3
1
3