Please refer to the section for Noun in J dictionary. It worth to read J dictionary from beginning to end at least once, even you cannot understand all of them. At least you will know where to find definitions later on. Just my 2 cents.
On Dec 13, 2017 10:11 AM, "TongKe Xue" <[email protected]> wrote: > This answered a question I didn't even think to ask -- "what if the > cells have different ranks?" > > Thanks! > > On Tue, Dec 12, 2017 at 5:39 PM, bill lam <[email protected]> wrote: > > In J dictionary, verb > > > > The shape of a result is the frame (relative to the cells to which the > verb > > applies) catenated with the shape produced by applying the verb to the > > individual cells. Commonly these individual shapes agree, but if not, > they > > are first brought to a common rank by introducing leading unit axes to > any > > of lower rank, and are then brought to a common shape by *padding* with > an > > appropriate *fill* element: space for a character array, 0 for a numeric > > array, and a boxed empty list for a boxed array. For example: > > > > i."0 s=: 2 3 4 >'I';'was';'here' > > 0 1 0 0 I > > 0 1 2 0 was > > 0 1 2 3 here > > > > > > > > On Dec 13, 2017 7:59 AM, "TongKe Xue" <[email protected]> wrote: > > > >> Both explanations are great. Unfortunately, I asked an XY problem. Let > >> me re-ask as follows: > >> > >> I am trying to write a mini interpreter for J. > >> > >> How do we execute "i. (2 2 $ 1 2 3 4)" ? > >> > >> After parsing, and evaluating the (), we are left with: > >> > >> 1. execute monad "i." on tensor of (shape: [2 2], data: [[1 2] [3 4]]) > >> > >> 2. Next, we look up the rank of "i." and see that it is [1 _ _] > >> > >> 3. Therefore, we split [[1 2] [3 4]] into a frame, containing two cells: > >> cell1 = [1 2] > >> cell2 = [3 4] > >> > >> 4. We execute i. on each cell, getting: > >> cell1-output = [0 1] > >> cell2-output = [[0 1 2 3] [4 5 6 7] [8 9 10 11]] > >> > >> 5. At this point, I am expecting: error! tensor shape mismatch > >> > >> 6. Instead, J appears to just 0 pad the cells until they are of the same > >> size. > >> > >> Is there some fundamental principle why the 0 padding is happening, or > >> does J have a hard coded piece of logic that says: > >> when merging the output-cells of a frame, if the output-cells are of > >> different shape, 0-pad them all until they are of the same shape ? > >> > >> Thanks, > >> --TongKe > >> > >> > >> > >> On Tue, Dec 12, 2017 at 4:35 PM, Brian Schott <[email protected]> > >> wrote: > >> > The rank of monadic i. is 1 as determined by the following. > >> > i. b. 0 > >> > 1 _ _ > >> > > >> > Consider the following where the rows and column lengths of i. 1 2 are > >> > made to match those of i. 3 4. > >> > > >> > (i. 1 2),:i. 3 4 > >> > 0 1 0 0 > >> > 0 0 0 0 > >> > 0 0 0 0 > >> > > >> > 0 1 2 3 > >> > 4 5 6 7 > >> > 8 9 10 11 > >> > > >> > But that may not be explanation enough. > >> > > >> > On Tue, Dec 12, 2017 at 5:49 PM, TongKe Xue <[email protected]> wrote: > >> > > >> >> Hi, > >> >> > >> >> > >> >> I understand what (2 2 $ 1 2 3 4) does. > >> >> I understand what i. 1 2 does > >> >> I understand what i. 3 4 does. > >> >> > >> >> I have read http://www.jsoftware.com/help/ > >> jforc/loopless_code_i_verbs_ > >> >> have_r.htm#_Toc191734331 > >> >> > >> >> I understand the concept of verb-rank, of frames + cells, of > >> >> "promoting one frame to another if they share the same prefix." > >> >> > >> >> I don't understand how the 0 padding in > >> >> > >> >> i. (2 2 $ 1 2 3 4) works > >> >> > >> >> > >> >> What is the mechanism by which 0-padding is happening? > >> >> > >> >> > >> >> Thanks, > >> >> --TongKe > >> >> > >> >> > >> >> ==== > >> >> > >> >> 2 2 $ 1 2 3 4 > >> >> > >> >> 1 2 > >> >> > >> >> 3 4 > >> >> > >> >> i. 1 2 > >> >> > >> >> 0 1 > >> >> > >> >> i. 3 4 > >> >> > >> >> 0 1 2 3 > >> >> > >> >> 4 5 6 7 > >> >> > >> >> 8 9 10 11 > >> >> > >> >> i. (2 2 $ 1 2 3 4) > >> >> > >> >> 0 1 0 0 > >> >> > >> >> 0 0 0 0 > >> >> > >> >> 0 0 0 0 > >> >> > >> >> > >> >> 0 1 2 3 > >> >> > >> >> 4 5 6 7 > >> >> > >> >> 8 9 10 11 > >> >> ------------------------------------------------------------ > ---------- > >> >> For information about J forums see http://www.jsoftware.com/ > forums.htm > >> > > >> > > >> > > >> > > >> > -- > >> > (B=) <-----my sig > >> > Brian Schott > >> > ------------------------------------------------------------ > ---------- > >> > For information about J forums see http://www.jsoftware.com/ > forums.htm > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
