| a0=: each=: &.> | Apply verb to each box |
| m1=: open=: -:> :: 1: | Test if open (not boxed) |
| v2=: fmt=: ": | Format |
| m3=: just=: 3 : '9!:3 (2) [ 9!:17 y' | Set function display to boxed form, and set justification within boxes to y |
| m4=: L. = 0: | Test if open |
| m5=: < -: {:@;~ | Test if open |
| m6=: 32&>@(3!:0) | Test if open |
| m7=: <^:(L. = 0:) | Box if open |
The adverb each applies its verb argument to the "inside" of each box of the argument of the resulting function, as illustrated below:
]c=: <"1 <"2 i.3 3 3 2
+---------------------------------------------------------+
|+---------------+|+-----------------+|+-----------------+|
||0 1| 6 7|12 13|||18 19|24 25|30 31|||36 37|42 43|48 49||
||2 3| 8 9|14 15|||20 21|26 27|32 33|||38 39|44 45|50 51||
||4 5|10 11|16 17|||22 23|28 29|34 35|||40 41|46 47|52 53||
|+---------------+|+-----------------+|+-----------------+|
+---------------------------------------------------------+
|. each c
+---------------------------------------------------------+
|+---------------+|+-----------------+|+-----------------+|
||12 13| 6 7|0 1|||30 31|24 25|18 19|||48 49|42 43|36 37||
||14 15| 8 9|2 3|||32 33|26 27|20 21|||50 51|44 45|38 39||
||16 17|10 11|4 5|||34 35|28 29|22 23|||52 53|46 47|40 41||
|+---------------+|+-----------------+|+-----------------+|
+---------------------------------------------------------+
|. each each c
+---------------------------------------------------------+
|+---------------+|+-----------------+|+-----------------+|
||4 5|10 11|16 17|||22 23|28 29|34 35|||40 41|46 47|52 53||
||2 3| 8 9|14 15|||20 21|26 27|32 33|||38 39|44 45|50 51||
||0 1| 6 7|12 13|||18 19|24 25|30 31|||36 37|42 43|48 49||
|+---------------+|+-----------------+|+-----------------+|
+---------------------------------------------------------+
|. each each each c
+---------------------------------------------------------------------------+
|+---------------------+|+-----------------------+|+-----------------------+|
||+---+|+-----+|+-----+|||+-----+|+-----+|+-----+|||+-----+|+-----+|+-----+||
|||0|1|||6 |7 |||12|13|||||18|19|||24|25|||30|31|||||36|37|||42|43|||48|49|||
||+-+-||+--+--||+--+--||||+--+--||+--+--||+--+--||||+--+--||+--+--||+--+--|||
|||2|3|||8 |9 |||14|15|||||20|21|||26|27|||32|33|||||38|39|||44|45|||50|51|||
||+-+-||+--+--||+--+--||||+--+--||+--+--||+--+--||||+--+--||+--+--||+--+--|||
|||4|5|||10|11|||16|17|||||22|23|||28|29|||34|35|||||40|41|||46|47|||52|53|||
||+---+|+-----+|+-----+|||+-----+|+-----+|+-----+|||+-----+|+-----+|+-----+||
|+---------------------+|+-----------------------+|+-----------------------+|
+---------------------------------------------------------------------------+
The display of a non-uniform boxed array illustrates the fact that boxed elements are normally justified to the top left. For example:
]a=: 2 2$'Baker';'John';('Apt 316','Temple St',:'York, Pa');617 204 4567
+----------------------+
|Baker |John |
+---------+------------|
|Apt 316 |617 204 4567|
|Temple St| |
|York, Pa | |
+----------------------+
When applied to a boxed right argument, the left argument of the format function specifies the justification within a display, using 0, 1, and 2 for top, centre, bottom, and for left, centre, right:
fmt=: ": 1 1 fmt a Centred rows and columns +----------------------+ | Baker | John | +---------+------------| |Apt 316 | | |Temple St|617 204 4567| |York, Pa | | +----------------------+ ;/all=: 3 3 #: i. 3 3 +-----------+ |0 0|1 0|2 0| |0 1|1 1|2 1| |0 2|1 2|2 2| +-----------+ $ all fmt a 3 3 7 25 <"2 all fmt a +--------------------------------------------------------------------------+ |+----------------------+|+----------------------+|+----------------------+| ||Baker |John ||| Baker | John ||| Baker| John|| |+---------+------------||+---------+------------||+---------+------------|| ||Apt 316 |617 204 4567|||Apt 316 |617 204 4567|||Apt 316 |617 204 4567|| ||Temple St| |||Temple St| |||Temple St| || ||York, Pa | |||York, Pa | |||York, Pa | || |+----------------------+|+----------------------+|+----------------------+| +------------------------+------------------------+------------------------| |+----------------------+|+----------------------+|+----------------------+| ||Baker |John ||| Baker | John ||| Baker| John|| |+---------+------------||+---------+------------||+---------+------------|| ||Apt 316 | |||Apt 316 | |||Apt 316 | || ||Temple St|617 204 4567|||Temple St|617 204 4567|||Temple St|617 204 4567|| ||York, Pa | |||York, Pa | |||York, Pa | || |+----------------------+|+----------------------+|+----------------------+| +------------------------+------------------------+------------------------| |+----------------------+|+----------------------+|+----------------------+| ||Baker |John ||| Baker | John ||| Baker| John|| |+---------+------------||+---------+------------||+---------+------------|| ||Apt 316 | |||Apt 316 | |||Apt 316 | || ||Temple St| |||Temple St| |||Temple St| || ||York, Pa |617 204 4567|||York, Pa |617 204 4567|||York, Pa |617 204 4567|| |+----------------------+|+----------------------+|+----------------------+| +--------------------------------------------------------------------------+
The diagonal elements of this display are also given by the scalar left arguments 0, 1, and 2. Moreover, 9!:16 can be used to set the default justification of boxed displays, as it is in the function just, which first sets the function display to the boxed form. For example:
totient=: * -.@%@~.&.q: just 1 totient +-------------------------+ | |+---------------------+| | ||+-------------+| | || | |||+------+| | || | || |*||||-.|@|%||@|~.||&.|q:|| | |||+------+| | || | || | ||+-------------+| | || | |+---------------------+| +-------------------------+ just 2 totient +-------------------------+ | |+---------------------+| | ||+-------------+| | || | |||+------+| | || | || | ||||-.|@|%|| | || | || | |||+------+|@|~.|| | || | ||+-------------+|&.|q:|| |*|+---------------------+| +-------------------------+