If i: were redefined with monadic rank 1 then this definition of t could be a 
replacement for i:

   t=: ({: +/&i: {.)`i:@.(1=#) 
   t 3
_3 _2 _1 0 1 2 3
   t 3 3
_6 _5 _4 _3 _2 _1 0
_5 _4 _3 _2 _1  0 1
_4 _3 _2 _1  0  1 2
_3 _2 _1  0  1  2 3
_2 _1  0  1  2  3 4
_1  0  1  2  3  4 5
 0  1  2  3  4  5 6
    t 3 3j2
_6 _5 _4 _3 _2 _1 0
_3 _2 _1  0  1  2 3
 0  1  2  3  4  5 6
   t 3j2 3j2
_6 _3 0
_3  0 3
 0  3 6

I am not sure how useful these patterns are, but this approach could give a 
meaning to rank 1 arguments of length 2

Cheers, bob



> On Jan 3, 2017, at 8:38 PM, Raul Miller <[email protected]> wrote:
> 
> The rank of i. is not zero, but it's difficult to see how a variant on
> i: could use that approach.
> 
> If you get to messing with padding, you might also want to be messing
> with left/center/right alignment.
> 
> That's all I can think of right now.
> 
> -- 
> Raul
> 
> 
> On Tue, Jan 3, 2017 at 4:40 PM, robert therriault <[email protected]> 
> wrote:
>> I was looking at the ranks of primitives and was wondering if there was a 
>> particular justification for the rank of monadic i: (Steps) being 0. In 
>> fact, I began this by looking at monadic #: (Antibase 2) and wondering why 
>> its rank was _ .  Both verbs seem to act on their arguments in similar ways, 
>> creating a vector from a single atom input.
>> 
>>    #: b. 0 NB. monadic - left dyadic - right dyadic ranks
>> _ 1 0
>>   i: b. 0
>> 0 _ _
>> 
>>    #:  9
>> 1 0 0 1
>>   i:  9
>> _9 _8 _7 _6 _5 _4 _3 _2 _1 0 1 2 3 4 5 6 7 8 9
>> 
>> 
>> It is only when you look at how they operate in higher dimensions that you 
>> see the differences in the way padding is applied to results of different 
>> lengths.
>> 
>>    #: 1 2 4 8
>> 0 0 0 1
>> 0 0 1 0
>> 0 1 0 0
>> 1 0 0 0
>>   i: 1 2 4 8
>> _1  0  1  0  0  0  0  0 0 0 0 0 0 0 0 0 0
>> _2 _1  0  1  2  0  0  0 0 0 0 0 0 0 0 0 0
>> _4 _3 _2 _1  0  1  2  3 4 0 0 0 0 0 0 0 0
>> _8 _7 _6 _5 _4 _3 _2 _1 0 1 2 3 4 5 6 7 8
>> 
>> The use of _ as the rank of monadic #: allows the result to know about its 
>> neighbours and padding can be done in such a way as to retain the positional 
>> meaning. Overriding to rank 0 provides an opportunity for a different result.
>> 
>>    #:"_ [ 1 2 4 8
>> 0 0 0 1
>> 0 0 1 0
>> 0 1 0 0
>> 1 0 0 0
>>   #:"0 [ 1 2 4 8
>> 1 0 0 0
>> 1 0 0 0
>> 1 0 0 0
>> 1 0 0 0
>> 
>> Using 0 as the rank of monadic i: takes away the ability to change the 
>> padding because overriding to a rank of _ does not change the positioning.
>> 
>>    i:"0 [ 1 2 4 8
>> _1  0  1  0  0  0  0  0 0 0 0 0 0 0 0 0 0
>> _2 _1  0  1  2  0  0  0 0 0 0 0 0 0 0 0 0
>> _4 _3 _2 _1  0  1  2  3 4 0 0 0 0 0 0 0 0
>> _8 _7 _6 _5 _4 _3 _2 _1 0 1 2 3 4 5 6 7 8
>>   i:"_ [ 1 2 4 8
>> _1  0  1  0  0  0  0  0 0 0 0 0 0 0 0 0 0
>> _2 _1  0  1  2  0  0  0 0 0 0 0 0 0 0 0 0
>> _4 _3 _2 _1  0  1  2  3 4 0 0 0 0 0 0 0 0
>> _8 _7 _6 _5 _4 _3 _2 _1 0 1 2 3 4 5 6 7 8
>> 
>> 
>> Changing the rank of monadic i: would not be a priority for me, as it may 
>> break existing scripts and I don't see a large gain except for consistency, 
>> but are there other reasons for this that I may have missed? Also my 
>> anthropomorphized view of how the verbs work may be flawed and I would 
>> welcome corrections to my understanding.
>> 
>> Cheers, bob
>> 
>> ----------------------------------------------------------------------
>> 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