Topic: `APLX Help` : `Help on APL language` : `APL Primitives` : `⊂ Enclose`
[ Previous | Next | Contents | Index | APL Home ]

# `⊂` Enclose

One-argument form  See also two-argument form Partition

Enclose produces a scalar from its argument. If the argument is already a simple scalar the result is also a simple scalar, otherwise it has a depth of one greater than the argument.

```             TABLE←2 3⍴⍳6
TABLE
1 2 3
4 5 6
≡TABLE
1
⍴⊂TABLE                 (Enclose produces a scalar)
(Shape of a scalar is an empty vector)
⍴⍴⊂TABLE
0                             (Rank of scalar is 0)
≡⊂TABLE
2                             (Depth has been increased by 1)
```

## Enclose with axis

When used with an axis specification, enclose will only enclose the axes indicated within the axis specification.

```             ⊂[1]TABLE               (Enclose the  rows , leaving columns)
1 4  2 5  3 6
⍴⊂[1]TABLE              (Result is length 3 vector)
3
≡⊂[1]TABLE              (Depth increased by 1)
2
⊂[2]TABLE               (Enclose the  columns  leaving rows)
1 2 3  4 5 6
⍴⊂[2]TABLE              (Result is length 2 vector)
2
≡⊂[2]TABLE              (Depth increased by 1)
2
```

Enclose with axis can also be used to carry out a rearrangement of its argument (see also `⍉,` transpose) by using a non ascending set of axes in the axis specification. Including all the axes in ascending order is equivalent to enclose.

```             ⍴⊂[1 2]TABLE            (Same as ⊂TABLE)
EMPTY
⍴⊂[2 1]TABLE            (Scalar result)
EMPTY
⊂[2 1]TABLE             (Order of axes reversed)
1 4                           (Columns become rows within the first item
2 5                            of the result)
3 6
```

When the axis specification is an empty vector, enclose with axis has no effect on a simple array, but with non-simple arguments increases the depth of the argument by 1. Each item of the argument is enclosed, but the overall shape is not altered.

```             ⍴TABLE                  (TABLE, as above)
2 3
≡TABLE                  (Depth 1)
1
⍴⊂[⍳0]TABLE             (Enclose with empty vector axis
2 3                            specification has no effect)
≡⊂[⍳0]TABLE
1
TAB←2 2⍴(⍳3) (⍳3) 'ABC' 'DE'
TAB                     (Nested matrix)
1 2 3  1 2 3
ABC    DE
⍴TAB                    (Shape 2 2)
2 2
⍴⊂[⍳0]TAB               (Enclose with empty vector axis
2 2                            specification preserves shape)
≡TAB
2
≡⊂[⍳0]TAB               (Increases depth)
3
```

Topic: `APLX Help` : `Help on APL language` : `APL Primitives` : `⊂ Enclose`
[ Previous | Next | Contents | Index | APL Home ]