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

Reply via email to