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

Reply via email to