a0=: each=: &.> | Apply verb to each box |
m1=: open=: -:> :: 1: | Test if open (not boxed) |
v2=: fmt=: ": | Format |
m3=: just=: 3 : 0
9!:3 (2) NB. Boxed display
9!:17 y. NB. Box justification
) | 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:¦¦
¦*¦+---------------------+¦
+-------------------------+
|