Enclose: Difference between revisions
(Created page with "{{Built-ins|Enclose|⊂|<}}, or '''Box''', is a monadic primitive function which creates a nested scalar by wrapping its argument under one level of nestin...") |
|||
Line 55: | Line 55: | ||
== Description == | == Description == | ||
Some implementations allow a [[simple]] [[scalar]] to be | Some implementations allow a [[simple]] [[scalar]] to be [[box]]ed, while the others do not. | ||
Enclose (without axis) is a right inverse to [[Mix]] and [[First]]. | Enclose (without axis) is a right inverse to [[Mix]] and [[First]]. |
Revision as of 11:41, 16 June 2020
⊂ <
|
Enclose (⊂
, <
), or Box, is a monadic primitive function which creates a nested scalar by wrapping its argument under one level of nesting. When used with function axis, only the selected axes of the given array are enclosed. This can be seen as a more general form of Split, which can only enclose (or split) one selected axis.
Examples
An enclosed array is a scalar, which is subject to scalar extension. This can be used to simulate outer product by a scalar function or one-sided Each (pair the entire right argument with each element of the left argument, or vice versa). A notable application of this behavior is the "chipmunk idiom" X⊃¨⊂Y
, which simulates Y[X]
for (possibly nested) vector Y and simple X.
1 2 3+⊂4 5 6 ⍝ Computes (1+4 5 6)(2+4 5 6)(3+4 5 6) ┌─────┬─────┬─────┐ │5 6 7│6 7 8│7 8 9│ └─────┴─────┴─────┘ 1 2 3,¨⊂4 5 6 ⍝ Computes (1,4 5 6)(2,4 5 6)(3,4 5 6) ┌───────┬───────┬───────┐ │1 4 5 6│2 4 5 6│3 4 5 6│ └───────┴───────┴───────┘ (2 2⍴1 2 2 1)⊃¨⊂(1 2)(3 4)(5 6) ⍝ "chipmunk" idiom ┌───┬───┐ │1 2│3 4│ ├───┼───┤ │3 4│1 2│ └───┴───┘
Enclose with function axis can be used to move one or more axes to an extra level of nesting.
⎕←M←2 3 4⍴⎕A ABCD EFGH IJKL MNOP QRST UVWX ⊂[3]M ⍝ Enclose last axis; same as ↓M ┌────┬────┬────┐ │ABCD│EFGH│IJKL│ ├────┼────┼────┤ │MNOP│QRST│UVWX│ └────┴────┴────┘ ⊂[2 3]M ⍝ Enclose two axes at once ┌────┬────┐ │ABCD│MNOP│ │EFGH│QRST│ │IJKL│UVWX│ └────┴────┘ N←2 3 4 5⍴⎕A ⍴⊂[1 3]N ⍝ Shape of the array is enclosed axes removed 3 5 ⍴⊃⊂[1 3]N ⍝ Shape of each element is the enclosed axes 2 4
Description
Some implementations allow a simple scalar to be boxed, while the others do not.
Enclose (without axis) is a right inverse to Mix and First.
External links
Documentation