# Major cell

In the APL array model and leading axis theory, a **major cell**, or **item**, is a cell of an array which has rank one smaller than the rank of the array, or equal to it if the array is a scalar. The number of major cells in an array is its Tally, and a function can be called on the major cells of an array individually by applying it with rank `¯1`

using the Rank operator. Functions designed to follow leading axis theory often manipulate the major cells of an array. For example, Reverse First (`⊖`

) is considered the primary form of Reverse in leading-axis languages because it can be interpreted as reversing the major cells of its argument; J removes last-axis Reverse entirely.

## Examples

`A`

is an array with shape `3 4`

. Using Tally we see that the number of major cells in `A`

is the first element of the shape, `3`

:

```
⊢A ← 5 3 1 ∘.∧ 2 3 4 5
10 15 20 5
6 3 12 15
2 3 4 5
≢A
3
```

We can separate `A`

's major cells using Enclose with rank `¯1`

:

```
⊂⍤¯1 ⊢A
┌──────────┬─────────┬───────┐
│10 15 20 5│6 3 12 15│2 3 4 5│
└──────────┴─────────┴───────┘
```

Given another array `B`

we can search for cells of `B`

which match major cells of `B`

. High-rank Index-of always searches for right argument cells whose rank matches the rank of a left argument major cell: if the right argument is a vector and not a matrix then it searches for the entire vector rather than its major cells (which are scalars).

```
⊢B ← ↑ 4,/⍳6
1 2 3 4
2 3 4 5
3 4 5 6
A ⍳ B
4 3 4
A ⍳ 2 3 4 5
3
```

APL features [edit]
| |
---|---|

Built-ins | Primitive function ∙ Primitive operator ∙ Quad name |

Array model | Shape ∙ Rank ∙ Depth ∙ Bound ∙ Index ∙ Axis ∙ Ravel ∙ Ravel order ∙ Element ∙ Scalar ∙ Vector ∙ Matrix ∙ Simple scalar ∙ Simple array ∙ Nested array ∙ Box ∙ Cell ∙ Major cell ∙ Subarray ∙ Empty array ∙ Prototype |

Concepts and paradigms | Leading axis theory ∙ Scalar extension ∙ Conformability ∙ Scalar function ∙ Glyph ∙ Identity element |

Errors | LIMIT ERROR ∙ RANK ERROR |