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

www.microapl.co.uk

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 ]